从表中获取与数组中的值匹配的所有值?

时间:2015-09-23 21:21:15

标签: c# entity-framework linq linq-to-entities

我有一个像这样的数组

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

我在我的数据库中有一个表产品,其中包含一个PartNumber列,我可以像这样得到所有partNumbers,例如值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

我的查询结果应该是id为1,2,4,6的行,因为我的数组中没有数字2和4。

修改

我试图获取所有以Reportable数组中的数字开头的PartNumbers,而不仅仅是完全匹配。如果我的数组中有数字20,则查询中的有效数字将是例如2010,20221,20和20111,但不是例如25111,10333,11000。我找到了扩展方法StartsWith()但是我没有得到它工作

1 个答案:

答案 0 :(得分:0)

您可以像这样使用Contains

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