我从 Facebook SDK 获得了一个对象
var responsePages = (JsonObject)FBClient_.Get(new { ids =
[123123123, 123123123, 12312213, etc]});
此查询返回数据(见图)
现在如何将其转换为对象列表? 我尝试过以下操作,但不起作用
var pe = (from dynamic page
in (IList<object>)(object)responsePages.Values
orderby page.name ascending
select new FBPage
{
Id = Convert.ToString(page.id),
}
).ToList();
所以失败了,希望得到任何帮助,因为这种动态的东西让我非常生气。
谢谢
最佳答案
如果您使用动态,则无需进行强制转换。
var fb = new FacebookClient();
dynamic result = fb.Get(new { ids = new[] { "...", "..." } });
var pages = new List<FBPage>();
foreach (var page in result.Values)
{
var fbPage = new FBPage {
Id = page.id,
Name = page.name
};
pages.Add(fbPage);
}
或者如果你想使用 linq。 (动态不支持扩展方法,因此您需要进行一些转换, JsonObject => IDictionary<string, dyanmic>
、 JsonArray => IList<dynamic>
)
var pages = ((IDictionary<string, dynamic>)result)
.Select(kpv => kpv.Value)
.Select(p => new FBPage { id = p.id, name = p.name })
.ToList();
或者你的强类型类。
var fbPages = fb.Get<IDictionary<string, FBPage>>(new {
ids = new[] { "...", "..." }
}).Values;
public class FBPage
{
public string id { get; set; }
public string name { get; set; }
}
关于C# Facebook SDK 动态数据转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13659553/