【问题标题】:Convert Dynamic Type to List将动态类型转换为列表
【发布时间】:2011-03-23 18:29:57
【问题描述】:

我正在使用 Facebook C# SDK 来获取数据。我想使用 parallel.foreach 但不能使用它 - 相反,会发生错误:

如果不先将 lambda 表达式转换为委托或表达式树类型,则不能将其用作动态分派操作的参数

那么有什么方法可以将检索到的数据转换为列表?

dynamic friends = app.Get("me/friends");   
Parallel.ForEach(friends.data, friendsData =>
    {
        Interlocked.Increment(ref infoCount);
        LoadFriends(friend, infoCount);
    });

【问题讨论】:

  • 朋友们返回了什么样的数据?是XML,一种数据结构,什么?使用 var 代替 dynamic 能解决您的问题吗?

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


【解决方案1】:

如果不能使用 lambda 表达式,是否尝试过匿名方法?

dynamic friends = app.Get("me/friends");   
    Parallel.ForEach(friends.data, delegate(dynamic friendsData)
       {
           Interlocked.Increment(ref infoCount);
           LoadFriends(friend, infoCount);

       });

【讨论】:

  • 在调用 Parallel.ForEach 之前尝试将 friends.data 转换为 IEnumerable
【解决方案2】:

我使用以下代码将 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);
       }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    相关资源
    最近更新 更多