我使用Facebook C#SDK获取数据。我想使用parallel.foreach
但不能使用它 - 而是发生错误:
如果没有先将lambda表达式转换为委托或表达式树类型,则不能将lambda表达式用作动态调度操作的参数
那么有什么办法可以将检索到的数据转换成列表吗?
dynamic friends = app.Get("me/friends");
Parallel.ForEach(friends.data, friendsData =>
{
Interlocked.Increment(ref infoCount);
LoadFriends(friend, infoCount);
});
答案 0 :(得分:3)
如果你不能使用lambda表达式,你试过一个匿名方法吗?
dynamic friends = app.Get("me/friends");
Parallel.ForEach(friends.data, delegate(dynamic friendsData)
{
Interlocked.Increment(ref infoCount);
LoadFriends(friend, infoCount);
});
答案 1 :(得分:1)
我使用以下代码将JsonArray转换为id作为键的字典并将其命名为值
var friendlist = (friends.data as Facebook.JsonArray).ToDictionary(
p => (p as Facebook.JsonObject)["id"].ToString(),
p => (p as Facebook.JsonObject)["name"].ToString());
Parallel.ForEach(friendlist, friend
{
Interlocked.Increment(ref infoCount);
LoadFriends(friend, infoCount);
}