如何从基于密钥的jobject列表中获取对象列表?

时间:2017-08-09 12:20:21

标签: c# linq json.net

这是我的代码: -

List<JObject> newStudents = students.Where(x => x.Property("parent_id").ToString() == null).ToList();


List<JObject> existedStudents = students.Where(x => x.Property("parent_id").ToString() != null).ToList();

我使用Linq尝试了以下代码,但没有使用

parent_id

在上面的列表中包含4个对象,前两个对象包含parent_id键,接下来两个对象不包含。如何在{#1}}密钥存在而不存在于c#中的列表中。

3 个答案:

答案 0 :(得分:3)

根据documentationJObject.Property如果属性不存在则返回null

因此

x.Property("parent_id").ToString()
如果NullReferenceException不存在,

将抛出parent_id

要检查属性是否存在,请不要使用ToString(),只需将Propertynull进行比较:

List<JObject> newStudents = students.Where(x => x.Property("parent_id") == null).ToList();

答案 1 :(得分:1)

如果该属性不存在,Property方法将返回null,according to the documentation

所以不要拨打.ToString(),否则你会得到NullReferenceException。代替:

List<JObject> newStudents = students.Where(x => x.Property("parent_id") == null).ToList();

答案 2 :(得分:1)

您应该执行以下操作

List<JObject> newStudents = students.Where(x => x.Property("parent_id").Value<string>() == null).ToList();


List<JObject> existedStudents = students.Where(x => x.Property("parent_id").Value<string>() != null).ToList();