如何从FacebookC#SDK在JsonArray中执行linq查询?

如何从FacebookC#SDK在JsonArray中执行linq查询?,c#,linq,facebook-c#-sdk,C#,Linq,Facebook C# Sdk,我正在尝试使用Facebook C#SDK在friends JsonArray中执行linq查询。因此,我尝试: var facebook = new FacebookWebClient(); dynamic facebookFriends = facebook.Get("me/friends"); JsonArray data = facebookFriends.data; var friends = data.Where<JsonObject>(d => d["nam

我正在尝试使用Facebook C#SDK在friends 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"));
var facebook=new facebook网络客户端();
DynamicFaceBookFriends=facebook.Get(“我/朋友”);
JsonArray data=facebookFriends.data;
var friends=data.Where(d=>d[“name”].ToString().StartsWith(“d”);
但在最后一行中,我得到了以下编译错误:

“'Facebook.JsonArray'不包含'Where'的定义和最佳扩展方法重载'System.Linq.ParallelEnumerable.Where(System.Linq.ParallelQuery,System.Func)'具有一些无效参数”

那么,我该怎么做呢?

你不能在哪里使用
因为
JsonArray
IEnumerable
,而不是
IEnumerable

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

var friends = data.Where(d => d["name"].ToString().StartsWith("D"));
这将使lambda表达式中的
d
变量为
JsonValue

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

var friends=data.OfType().Where(d=>d[“name”].ToString().StartsWith(“d”);

使用第一个选项时,我在“d[“name”]”中遇到以下编译错误:“无法将带[]的索引应用于“object”类型的表达式”。第二种方法有效=D
var friends = data.OfType<JsonObject>().Where(d => d["name"].ToString().StartsWith("D"));