Чтобы получить доступ к членам object
, вам необходимо привести его к типу, в котором этот член определен.Это было бы немного сложно, потому что тип является анонимным, но не невозможным:
var items = new List<object> {
new { id = 1, parentId = 0, children = new List<object>() },
new { id = 2, parentId = 3, children = new List<object>() },
new { id = 3, parentId = 1, children = new List<object>() },
new { id = 4, parentId = 0, children = new List<object>() }
};
T Cast<T>(T ignore, object obj) => (T)obj;
var typedNull = true ? null : new { id = default(int), parentId = default(int), children = default(List<object>) };
var typedObject = Cast(typedNull, items[2]);
Console.WriteLine(typedObject.id);
Console.WriteLine(typedObject.parentId);
Демо
Но вам лучше объявить свой собственный именованный тип для этой целивместо этого.