下面是一個查詢:獲取項目的列表,其ID等於某一值 - LINQ C#
from order in db.tblCustomerBuys
where selectedProducts.Contains(order.ProductID)
select order.CustomerID;
selectedProducts
是包含一些目標產品ID的列表,例如它是{ 1, 2, 3}
。 以上查詢將返回他們已購買selectedProducts
之一的客戶ID。例如,如果某人購買了產品1或2,則其ID將被結果。
但我需要收集他們已經購買了所有產品的客戶ID。例如,如果有人購買了產品1 AND 2 AND 3,那麼它將會是結果。
如何編輯此查詢?
的tblCustomerBuys是這樣的:
CustomerID - ID of Customer
ProductID - the product which the customer has bought
是這樣的:
CustomerID ProdcutID
---------------------------
110 1
110 2
112 3
112 3
115 5
更新時間:
由於答案我應該做的分組,由於某種原因,我應該使用這種類型的查詢:
var ID = from order in db.tblCustomerBuys
group order by order.CustomerID into g
where (selectedProducts.All(selProdID => g.Select(order => order.ProductID).Contains(selProdID)))
select g.Key;
但它會給出這個錯誤: Local sequence cannot be used in LINQ to SQL implementations of query operators except the Contains operator.
我認爲你需要也添加數據庫的結構。訂單和產品如何連接? –
如何在一個'tblCustomerBuys'條目中購買多個產品?到目前爲止,我只看到一個字段'ProductID',我認爲這個字段只有一個值。或者我錯了 –
@MongZhu:這是客戶和(購買)產品之間的關係表。所以重複'CustomerID'意味着這個客戶已經購買了多個產品。 –