为什么不能在JObject上使用LINQ方法?

时间:2018-05-10 02:41:29

标签: c# .net linq json.net

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

为什么?感谢。

1 个答案:

答案 0 :(得分:8)

JObject同时实现query.WhereRestrictionOn(x => x.Nombre).IsLike(nombre, MatchMode.Start); query.WhereRestrictionOn(x => x.Nombre).IsLike(apellidoM, MatchMode.End); (继承自IEnumerable<KeyValuePair<string, JToken>>)。

因此,您无法直接使用LINQ(例如IEnumerable<JToken>),因为它不知道要扩展哪些可用数据。

因此你需要先施展:

JContainer

或:

Select

或@Evk指出:

((IEnumerable<KeyValuePair<string, JToken>>) jobj).Select(x => x)