LinqPadのNorthWind.sdfを使用して、次のステートメントを正常に実行しました。
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.ShipViaOrders.Count()
}
同時に、LinqPadのOdataサービス(http://services.odata.org/northwind/northwind.svc)で同様のステートメントを実行できませんでした。
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.Orders.Count()
}
エラーは、「式s.Orders.Count()を使用したタイプ<> f__AnonymousType0`3 [System.Int32、System.String、System.Int32]のインスタンスの構築または初期化はサポートされていません。」です。
LinqサポートではODataサービスが非常に制限されていることを知っています。アプリケーションで動的Linqステートメントをサポートしています。実際、データソースをCompactSQLServerからODataサービスに移行しようとしています。
したがって、一般的な方法でNotSupportedExceptionに対処する必要があります。現在、実行する前に、プロパティ定義の構文を確認しようとしています。
"s.Orders.Count() as Count"
チェックに合格しましたが、ODataのNotSupportedExceptionに適合しました。
プロパティ定義(文字列またはラムダによる)がLinqプロバイダーでサポートされているかどうかを確認する方法はありますか?
任意の提案をいただければ幸いです。
イン