Cast linq Ergebnisse zu List<MyInterface>
Habe ich erweiterte meine Entitäten zu implementieren bestimmte Schnittstellen für Ihren Typ. Ich bin versucht, führen Sie die folgende Abfrage:
var results = from x in context.MyEntityTable
where x.AProperty == AValue
select x;
return results.Count() > 0 ? results.Cast<IApplicationEntity>().ToList() : null;
Aber ich bekomme immer folgenden Fehler:
"LINQ to Entities unterstützt nur casting Entity Data Model primitive Typen"
Im Grunde, was ich tun möchte, ist immer konvertieren die Ergebnisse aus den raw-entity-Typ eine generische Liste die Schnittstelle implementiert.
Ist das möglich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Form auf der client unter Umgehung des entity framework query-übersetzung-Schicht durch den Aufruf
AsEnumerable
extension Methode:Es ist jedoch besser, um in umgekehrter Reihenfolge zu tun, die
Count
check:Wenn Sie möchten, werfen Sie Ihre Ergebnisse auf einen komplexen Typ, die Sie benötigen, zu zwingen, den code zu verwenden, LINQ to Objects, anstatt LINQ to Entities.
Aufruf der
AsEnumerable
Erweiterung Methode vor dem cast ist der trick hier.Versuchen Sie Folgendes:
Beachten Sie auch, dass es nicht klug, um zu überprüfen
Count()
auf der aufzählbar, da es bedeutet, dass die collection iteriert man über das doppelte.AsEnumerable
bevor der cast. Ansonsten, EF versuchen, um es zu übersetzen, um eine Abfrage ausführen, auf die Anbieter.