该数据库包含订单。订单可以包含在一组订单中。对于每组订单,它可以包含 1 到多个订单。
但是,Orders 可以有一个分配给 GroupOrderId 的 NULL 值,因为之前的 Orders 没有分组概念。只有新订单才会强制执行添加到组的概念。
为了对每个订单执行操作而填充的类结构是
public class OrdersGroup
{
public int? GroupOrderId { get; set; }
public List<int> OrderIds { get; set; }
}
linq 语句
var workPacketOrdersList = (from o in db.Orders
where
o.GroupOrderId >= groupOrderIdMin && o.GroupOrderId <= groupOrderIdMax &&
o.IsDeleted == false
orderby o.WorkPacketId ascending
group o by o.WorkPacketId
into grp
select new OrdersGroup
{
GroupOrderId = grp.Key,
OrderIds = grp.Select(g => g.OrderId).ToList()
}).ToList();
完全例外
LINQ to Entities does not recognize the method 'System.Collections.Generic.List`1[System.Int32] ToList[Int32](System.Collections.Generic.IEnumerable`1[System.Int32])' method, and this method cannot be translated into a store expression.
我看到 linq 查询的返回类型是List<OrdersGroup>
.
如果查询中省略了最终的 .ToList() ,则返回类型将变为IQueryable<OrdersGroup>
无论接下来执行什么操作,结果都是该方法无法转换为存储表达式的异常。
我试图将特定内容删除select new OrdersGroup
为更通用的内容select new
,然后对此结果执行操作,只是为了找到相同的商店表达式异常。
有人可以对这个 linq 不正确的地方有所了解吗?