ich die folgende Erklärung mit dem Northwind.sdf in LinqPad erfolgreich ausgeführt wird:Gibt es eine allgemeine Methode, um zu überprüfen, ob eine Property-Definition von einem Linq-Provider unterstützt wird, insbesondere OData?
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.ShipViaOrders.Count()
}
Zur gleichen Zeit, ich konnte eine ähnliche Aussage mit dem OData Service (http://services.odata.org/northwind/northwind.svc) in LinqPad auszuführen:
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.Orders.Count()
}
Der Fehler ist "Erstellen oder Initialisieren Instanzen des Typs <> f__AnonymousType0`3 [System.Int32, System.String, System.Int32] mit dem Ausdruck s.Orders.Count() wird nicht unterstützt.".
Ich weiß, OData-Service ist in Linq Support sehr begrenzt. Ich habe eine dynamische Linq-Anweisung in meiner Anwendung. Eigentlich versuche ich die Datenquelle von Compact SQL Server zum OData-Service zu migrieren.
Also muss ich NotSupportedException in einer allgemeinen Weise behandeln. Derzeit versuche ich die Syntax der zu überprüfenden Eigenschaft definieren, bevor es, wie
"s.Orders.Count() as Count"
Es ging meinen Scheck laufen, aber es traf NotSupportedException von OData.
Gibt es eine Möglichkeit zu überprüfen, ob eine Eigenschaft (durch eine Zeichenfolge oder ein Lambda) von einem Linq-Provider unterstützt wird?
Alle Vorschläge sind willkommen.
Ying
@Ying: Das klingt wie * die * Antwort auf mich. Wenn ja, möchten Sie es vielleicht akzeptieren. – chiccodoro