7

データベースには注文が含まれています。注文は、注文のグループ内に含めることができます。注文のグループごとに、1 つから多くの注文を含めることができます。

ただし、以前の注文にはグループ化の概念がなかったため、注文には GroupOrderId に NULL 値が割り当てられる可能性があります。グループに追加されるという概念を強制するのは、新しいオーダーのみです。

各オーダーでアクションを実行するために設定されるクラス構造は次のとおりです。

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

4 に答える 4