我有一张桌子叫Orders
和一个名为Customers
. Orders
有财产CustomerId
。现在我想获取我的客户的所有订单Customers
list.
这是我尝试过的:
IEnumerable<Customer> customers; // list of customers
List<Order> orders = dbContext.Orders.Where(x => customers.Any(y => y.Id == x.CustomerId)).Include(x => x.someOtherTable).ToList();
由于某种原因,这总是会导致异常,指出无法翻译 LINQ 表达式。我的假设是,这是因为 Order 中的 CustomerId 可为空。但我不确定。
Order:
public int Id { get; set; }
public int? CustomerId { get; set; } // has to be nullable
...
Customer:
public int Id { get; set; }
public string Name { get; set; } // has to be nullable
...
由于简单,这只是一小段。
不,原因是customers
is IEnumerable
, not IQueryable
,因此 LINQ 无法将您的集合转换为 SQL 代码。
转换你的IEnumerable<Customer>
到 ID 列表:
int[] ids = customers.Select(o => o.id).ToArray();
And Where
with Contains
:
List<Order> orders = dbContext.Orders.Where(x => ids.Contains(x.Id))
.Include(x => x.someOtherTable).ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)