У меня есть следующая иерархия объектов в коде Entity Framework First:
class Parent {
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Child> Children { get; set; }
}
class Child {
public int Id { get; set; }
public int ParentId { get; set; }
public virtual ICollection<Grandchild> Grandchildren { get; set; }
}
class Grandchild {
public string Name { get; set; }
public int Age { get; set; }
}
Я хочу получить список родителей и возраст их старшего внука. Если в моей базе данных есть 2 родителя, то у каждого родителя есть 2 ребенка, а у каждого ребенка 2 ребенка:
Parent 1
Child 1
Grandchild 1 - Age 10
Grandchild 2 - Age 15
Child 2
Grandchild 3 - Age 3
Grandchild 4 - Age 7
Parent 2
Child 3
Grandchild 5 - Age 1
Grandchild 6 - Age 9
Child 4
Grandchild 7 - Age 18
Grandchild 8 - Age 16
Я хочу, чтобы запрос возвратил два объекта:
var expected = new List<anon>
{
new { Name = "Parent 1", MaxAge = 15 },
new { Name = "Parent 2", MaxAge = 18 }
};
Как я могу написать это в LINQ to Entities?
Редактировать
Кроме того, возможно ли вернуть имя внуков вместе с их возрастом? В основном, максимальный возраст внука и кто этот внук?