RuntimeBinderException动态Linq与Facebook C#SDK
问题描述:
我在画布应用程序中使用Facebook C#SDK。RuntimeBinderException动态Linq与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();
}
我得到以下异常:
RuntimeBinderException: Cannot perform runtime binding on a null reference
的代码执行以下操作:
它执行FQL查询得到一个
JsonArray
包含JsonObject
每个都带有一个uid属性(包含th不属于某个粉丝专页的用户的用户。的选择刚才的所有动态对象转换为
List<string>
的FQL部分只是正常工作,因为我可以看到在调试的结果。 问题出在Select
,我无法使它工作。
我该如何解决动态拉姆达? (请不要只是告诉我使用foreach,这是我目前正在做的)
答
问题是扩展方法不能用于动态对象。将查询结果转换为JsonArray,然后可以在JsonArray上使用linq表达式。
var result = (JsonArray)fb.Fql(query);
return result.Select((Func<dynamic, string>)(x => x.uid)).ToList();