數據庫包含Orders。訂單可以包含在一組訂單中。 對於每組訂單,它可以包含1到多個訂單。LINQ to Entities不能識別Generic.List(int)方法爲Generic.IEnumerable(int)方法
但是,訂單可能有一個NULL值賦值爲GroupOrderId,因爲以前的訂單沒有分組概念。只有新訂單強制執行添加到組的概念。
類結構,以便對每個訂單執行操作來填充是
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是不正確的?
如果我可以標記所有4個答案正確,我會。這是第一次。 (公開列表 OrderIds {get; set;})to(public IEnumerable OrderIds {get; set;})??( –
iamchrisfryer
) –