3

Facebook C#SDKを使用して、友人のJsonArrayでlinqクエリを実行しようとしています。だから、私は試してみます:

var facebook = new FacebookWebClient();

dynamic facebookFriends = facebook.Get("me/friends");

JsonArray data = facebookFriends.data;

var friends = data.Where<JsonObject>(d => d["name"].ToString().StartsWith("D"));

しかし、最後の行で、次のコンパイルエラーが発生します。

「「Facebook.JsonArray」には「Where」の定義が含まれておらず、最適な拡張メソッドのオーバーロード「System.Linq.ParallelEnumerable.Where(System.Linq.ParallelQuery、System.Func)」に無効な引数がいくつかあります。」

だから、どうすればそれを行うことができますか?

4

1 に答える 1

4

ではないWhere<JsonObject>ので使用できません。JsonArrayIEnumerable<JsonValue>IEnumerable<JsonObject>

一方、Where<>拡張メソッドを使用して型を指定する必要はありません。

var friends = data.Where(d => d["name"].ToString().StartsWith("D"));

これdにより、ラムダ式内の変数が of になりJsonValueます。

JsonObject要素を反復処理したい場合は、OfType前にメソッドを追加する必要がありますWhere(ただし、機能するかどうかは実際にはテストしていません):

var friends = data.OfType<JsonObject>().Where(d => d["name"].ToString().StartsWith("D"));
于 2012-05-26T18:53:59.283 に答える