将动态类型转换为列表

时间:2011-03-23 18:29:58

标签: c# wpf facebook-c#-sdk

我使用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);
    });

2 个答案:

答案 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);
       }