为什么不能在JObject上使用LINQ方法?
Newtonsoft.Json.Linq.JObject
实现了IEnumerable
,而不是显式实现,但为什么不能这样做:
using System.Linq; ... var jobj = new JObject(); var xxx = jobj.Select(x => x); //error foreach(var x in jobj) { } //no error
为什么? 谢谢。
JObject
实现IEnumerable
和IEnumerable
(通过inheritance自JContainer
)。
因此,您不能直接使用LINQ(例如Select
),因为它不知道哪些“枚举”可以“扩展”。
因此你需要先施展:
((IEnumerable>) jobj).Select(x => x)
要么:
jobj.Cast>().Select(x => x)
或者@Evk指出:
jobj.Select((KeyValuePair x) => x)