如何从 Facebook C# SDK 在 JsonArray 中执行 linq 查询

本文关键字:JsonArray 执行 linq 查询 SDK Facebook | 更新日期: 2023-09-27 18:35:30

我正在尝试使用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)'有一些无效的参数"

那么,我该怎么做呢?

如何从 Facebook C# SDK 在 JsonArray 中执行 linq 查询

你不能使用Where<JsonObject>,因为JsonArrayIEnumerable<JsonValue>,而不是IEnumerable<JsonObject>

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

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

这将使 lambda 表达式中的变量d JsonValue

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

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