Not*_*Dan 49 .net c# linq entity-framework
如何在linq中选择实体来从列表中选择带有键的行?像这样的东西:
var orderKeys = new int[] { 1, 12, 306, 284, 50047};
var orders = (from order in context.Orders
where (order.Key in orderKeys)
select order).ToList();
Assert.AreEqual(orderKeys.Count, orders.Count);
Run Code Online (Sandbox Code Playgroud)
我尝试使用一些答案中提到的Contains方法但它不起作用并抛出此异常:
LINQ to Entities无法识别方法'Boolean Contains [Int32](System.Collections.Generic.IEnumerable`1 [System.Int32],Int32)'方法,并且此方法无法转换为商店表达式.
And*_*are 42
试试这个:
var orderKeys = new int[] { 1, 12, 306, 284, 50047};
var orders = (from order in context.Orders
where orderKeys.Contains(order.Key);
select order).ToList();
Assert.AreEqual(orderKeys.Count, orders.Count);
Run Code Online (Sandbox Code Playgroud)
编辑:我找到了一些解决此问题的方法 - 请参阅WHERE IN子句?:
实体框架目前不支持集合值参数(在您的示例中为"statusesToFind").要解决此限制,可以使用以下实用程序方法手动构造给定值序列的表达式:
eka*_*808 21
我有同样的问题,我这样解决了
var orderKeys = new int[] { 1, 12, 306, 284, 50047};
var orders = (from order in context.Orders
where (orderKeys.Contains(order.Key))
select order).ToList();
Assert.AreEqual(orderKeys.Count, orders.Count);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89910 次 |
| 最近记录: |