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>因为JsonArrayis IEnumerable<JsonValue>, not IEnumerable<JsonObject>

另一方面,您不必使用Where<>扩展方法指定类型:

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

这将使dlambda 表达式中的变量为JsonValue.

如果您只想迭代JsonObject元素,则必须在之前添加OfType方法Where(但我还没有真正测试过它是否有效):

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