LINQ to Entities erkennt die Methode Generic.List (int) bis Generic.IEnumerable (int) nicht
Die Datenbank enthält Bestellungen. Bestellungen können in einer Gruppe von Bestellungen enthalten sein. Für jede Gruppe von Bestellungen kann es 1 bis viele Bestellungen enthalten.
Bestellungen konnte jedoch ein NULL-Wert GroupOrderId zugewiesen werden, da vorherige Bestellungen nicht das Gruppierungskonzept hatten. Nur neue Befehle erzwingen das Konzept, einer Gruppe hinzugefügt zu werden.
Die Klassenstruktur, die ausgefüllt werden muss, um Aktionen für jede Bestellung auszuführen, lautet
public class OrdersGroup
{
public int? GroupOrderId { get; set; }
public List<int> OrderIds { get; set; }
}
Die Linq-Anweisung
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();
Volle Ausnahme
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.
Ich sehe, dass der zurückgegebene Typ der Linq-Abfrage a istList<OrdersGroup>
.
Wenn die letzte .ToList () in der Abfrage weggelassen wird, wird der Rückgabetyp zu einerIQueryable<OrdersGroup>
Unabhängig davon, welche Aktion als Nächstes ausgeführt wird, ist das Ergebnis eine Ausnahme, dass diese Methode nicht in einen Geschäftsausdruck übersetzt werden kann.
Ich habe versucht, die spezifischen zu entfernenselect new OrdersGroup
in eine allgemeinereselect new
Führen Sie dann Aktionen für dieses Ergebnis aus, um nur die gleiche Ausnahme für den Geschäftsausdruck zu finden.
Kann jemand einen Einblick geben, wo diese Linq falsch ist?