siva kishore
siva kishore

Reputation: 43

How to get list of objects from list of jobjects based on key exists or not?

This is my code:-

List<JObject> students =[{"id":"101","name":"one","parent_id":"1"},{"id":"102","name":"two","parent_id":"2"},{"id":"103","name":"three"},{"id":"104","name":"four"}];

I tried the following code using Linq but not working

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();

In the above list contains 4 objects , first two objects contains parent_id key next two objects doesn't contain. How to parent_id key existed and not existed list in c#.

Upvotes: 4

Views: 4744

Answers (3)

user6448640
user6448640

Reputation:

You should do as follows

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();

Upvotes: 2

adjan
adjan

Reputation: 13674

According to the documentation, JObject.Property returns null if the property does not exist

Thus

x.Property("parent_id").ToString()

will throw a NullReferenceException if parent_id does not exist.

To check whether a property exists do not use the ToString(), just compare Property to null:

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

Upvotes: 3

Owen Pauling
Owen Pauling

Reputation: 11861

If the property does not exist, the Property method returns null, according to the documentation.

So do not call .ToString(), otherwise you will get a NullReferenceException. Instead:

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

Upvotes: 1

Related Questions