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
同时实现IEnumerable<KeyValuePair<string, JToken>>
和IEnumerable<JToken>
(通过从JContainer
继承)。
因此,您无法直接使用LINQ(例如Select
),因为它不知道要扩展的可枚举数。
因此,您需要先进行转换:
((IEnumerable<KeyValuePair<string, JToken>>) jobj).Select(x => x)
或者:
jobj.Cast<KeyValuePair<string, JToken>>().Select(x => x)
或@Evk指出:
jobj.Select((KeyValuePair<string, JToken> x) => x)
关于c# - 为什么不能在JObject上使用LINQ方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50264693/