2015-09-23 93 views
0

我有這樣獲取表中與數組中值相匹配的所有值?

string[] Reportable = { "1", "3", "5" }; 

我有一個表的產品在我與一列部分號碼數據庫中的數組,我可以得到所有partNumbers與e.g值2這樣。

var result = db.Products.ToList().Where(product => product.PartNumber == 2); 

但我想從數據庫中獲取與我的數組中的值相匹配的所有值Reportable。例如,如果我的桌子看起來像這樣

ID Name PartNumber 
1 Name1 1 
2 Name2 1 
3 Name3 2 
4 Name4 3 
5 Name5 4 
6 Name3 5 

我的查詢結果應該是行1,2,4,6,因爲我的數組中沒有數字2和4。

編輯

我'試圖獲得與通報陣列中的一個號碼,不僅精確匹配開頭的所有PartNumbers。如果我的數組中的數字爲20,那麼查詢中的有效數字將是例如2010,20221,20和20111,但不是例如25111,10333,11000。我找到了擴展方法StartsWith(),但我沒有得到它工作。

回答

0

您可以使用Contains這樣的:

var result = 
    db.Products.Where(product => 
      Reportable.Any(r => product.PartNumber.StartsWith(r)) 
    ).ToList(); 
+0

感謝您的答覆!是否可以修改而不是包含?例如,我想要所有以Reportable數組中的數字開頭的PartNumber。如果我的數組中有數字20,那麼查詢中的有效數字將是2010,20221和20111,但不是例如25111.我已經找到了擴展方法'StartsWith()',但我沒有得到它的工作。 – Xtreme

+0

@Xtreme - 這是可能的,你只需要使用'Any'方法而不是'Contains'。我已經更新了答案 – Aducci

相關問題