Newtonsoft.Json.Linq.JObject
实施的IEnumerable<T>
,而不是显式实现,但为什么不能这样做:
using System.Linq;
...
var jobj = new JObject();
var xxx = jobj.Select(x => x); //error
foreach(var x in jobj) { } //no error
为什么?谢谢。
JObject https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_Linq_JObject.htm两者都实现IEnumerable<KeyValuePair<string, JToken>>
and IEnumerable<JToken>
(通过继承自JContainer
).
因此您不能使用 LINQ(例如Select
)直接,因为它不知道要“扩展”哪个可枚举。
因此你需要先进行强制转换:
((IEnumerable<KeyValuePair<string, JToken>>) jobj).Select(x => x)
or:
jobj.Cast<KeyValuePair<string, JToken>>().Select(x => x)
或者正如 @Evk 指出的:
jobj.Select((KeyValuePair<string, JToken> x) => x)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)