Dynamic Facebook C#SDK动态Linq上的RuntimeBinderException

Dynamic Facebook C#SDK动态Linq上的RuntimeBinderException,dynamic,c#-4.0,facebook-c#-sdk,Dynamic,C# 4.0,Facebook C# Sdk,我正在画布应用程序中使用Facebook C#SDK 运行此代码时 public IEnumerable<string> GetFansIds(string pageId, IEnumerable<string> userIds) { if (userIds.Count() == 0) return new List<string>(); var fb = new FacebookApp(); string query

我正在画布应用程序中使用Facebook C#SDK

运行此代码时

public IEnumerable<string> GetFansIds(string pageId, IEnumerable<string> userIds)
{
    if (userIds.Count() == 0)
        return new List<string>();

    var fb = new FacebookApp();
    string query = String.Format("select uid from page_fan where uid IN ( {0} ) and page_id = {1}",
        String.Join(",", userIds),
        pageId
    );
    dynamic result = fb.Fql(query);
    return result.Select((Func<dynamic, string>)(x => x.uid)).ToList();
}
该代码执行以下操作:

  • 它执行FQL查询以获取包含每个uid属性的
    JsonObject
    JsonArray
    (包含不属于某个扇形页面的用户的uid)

  • 选择仅将所有动态对象转换为
    列表

FQL部分工作正常,因为我可以在调试器中看到结果。 问题是
Select
无法正常工作


如何修复动态lambda???(请不要告诉我使用foreach,这是我目前正在做的)

问题是扩展方法不能用于动态对象。将查询结果强制转换为JsonArray,然后可以在JsonArray上使用linq表达式

var result = (JsonArray)fb.Fql(query);
return result.Select((Func<dynamic, string>)(x => x.uid)).ToList();
var result=(JsonArray)fb.Fql(查询);
返回结果。选择((Func)(x=>x.uid)).ToList();
var result = (JsonArray)fb.Fql(query);
return result.Select((Func<dynamic, string>)(x => x.uid)).ToList();