从 table 中获取与数组中的值匹配的所有值?
Get all the values from the table that match values in an array?
我有一个这样的数组
string[] Reportable = { "1", "3", "5" };
我的数据库中有一个 table 产品,其中有一列 PartNumber,我可以像这样获取所有 partNumbers,例如值为 2。
var result = db.Products.ToList().Where(product => product.PartNumber == 2);
但我想从数据库中获取与数组 Reportable 中的值匹配的所有值。例如,如果我的 table 看起来像这样
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() 但我没有得到它工作。
您可以这样使用 Contains
:
var result =
db.Products.Where(product =>
Reportable.Any(r => product.PartNumber.StartsWith(r))
).ToList();
我有一个这样的数组
string[] Reportable = { "1", "3", "5" };
我的数据库中有一个 table 产品,其中有一列 PartNumber,我可以像这样获取所有 partNumbers,例如值为 2。
var result = db.Products.ToList().Where(product => product.PartNumber == 2);
但我想从数据库中获取与数组 Reportable 中的值匹配的所有值。例如,如果我的 table 看起来像这样
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() 但我没有得到它工作。
您可以这样使用 Contains
:
var result =
db.Products.Where(product =>
Reportable.Any(r => product.PartNumber.StartsWith(r))
).ToList();