2014-01-07 45 views
1

大多數情況下,我們找到的代碼像普通的列表:指定實體框架項目列表中的內容有兩個條件

CartItem Item = Items.Find(c => c.ProductID == ProductID); 
Item.Quantity = Quantity; 
Item.Price = Price; 

所以上面的代碼查找和更新與其他數據,但如果我想多找條件,那麼我該如何編寫代碼?

我想寫類似的代碼:

CartItem Item = Items.Find(c => c.ProductID == ProductID 
           and c.ProductName IN ("cake,bread,toast,drink")); 

回答

2

簡單。創建動態搜索關鍵字的字符串的數組/列表和對證如下:

var conditionarr = new []{"cake","bread","toast","drink"}; // your array or list of string 
CartItem Item = Items.Find(c => c.ProductID == ProductID 
&& conditionarr.Contains(c.ProductName)); 
+0

如果你有'List ''怎麼辦?我在轉換時出錯。 –

+0

包含任何收集字符串的工作,int,long ...我相信你不需要任何轉換。例如列表升,那麼你應該使用l.Contains(c.ProductId) –

+0

其實我現在明白了。我在'Contains()'方法內將'c.ProductID'強制轉換爲'(long)',就像'(long)c.ProductID'一樣。謝謝! –

2

您的查詢將是這樣的:

var serachIn="cake,bread,toast,drink"; 

CartItem Item = Items.Where(c => c.ProductID == ProductID && 
          serachIn.Contains(c.ProductName)); 
1

您可以使用此:

List<string> strList = new List<string>{ "cake", "bread", "toast", "drink" }; 
CartItem Item = Items.Find(c => c.ProductID == ProductID && strList.Contains(c.ProductName))