0

JSON としてシリアル化された c# オブジェクトを返す API があります。

API URL にある種の OData 形式の解析を実装する必要があります。たとえば、元々は次のようになっています: http://api.loc/userprofiles/all/?$orderby=ProfileProperties.Email

Filter / OrderBy (OData) クエリ文字列を解析し、データ ソースに Filter を適用できる、多かれ少なかれ単純なライブラリを探していました。Linq2Restは、次のように使用できる非常に単純な形式で見つかりました。

var filtered = allItems.Filter(Request.Params).OfType<Content.UserProfile>();

問題は、Content.UserProfile にネストされたプロパティ .ProfileProperties があることです。これには、関心のあるプロパティが含まれています。

たとえば、次のようになります。

var user = new Content.UserProfile();
user.ProfileProperties.Email = "my@mail.com";
user.ProfileProperties.FirstName = "Fukoka";

..など

残念ながら、Linq2Rest はクエリを解析できず、 「ProfileProperties.Email は有効なプロパティとして認識されません」というメッセージで失敗します。

ネストされたプロパティを持つアイテムに対してこのフィルターを実行するにはどうすればよいですか?

4

2 に答える 2

1

Microsoft が提供するOData クライアント ライブラリを使用でき ます。

使用していない特別な理由はありますか?

クエリ オプションからの例

// Freight 値が 30 より大きい注文の // クエリを定義し、出荷日で降順に並べ替えます。

  DataServiceQuery<Order> selectedOrders = context.Orders
    .AddQueryOption("$filter", "Freight gt 30")
    .AddQueryOption("$orderby", "OrderID desc");
于 2013-10-22T15:43:43.657 に答える