这是我的代码: -
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#中的列表中。
答案 0 :(得分:3)
根据documentation,JObject.Property
如果属性不存在则返回null
因此
x.Property("parent_id").ToString()
如果NullReferenceException
不存在,将抛出parent_id
。
要检查属性是否存在,请不要使用ToString()
,只需将Property
与null
进行比较:
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();