linq: grandparent - parent - children query - PullRequest
0 голосов
/ 14 октября 2010

У меня есть модель сущностей, и я хотел написать запрос linq, который возвращает количество детей и родителей для каждого деда.

Мне нужно вывести 3 столбца: Имя дедушки |Граф детей |Количество внуков

protected void Page_Load(object sender, EventArgs e)
{
     using (FamilyModel.TheConn myEntities = new FamilyModel.TheConn())
     {
          int TheUserID = 13; // will change later

          var myOutput = from gparents in myEntities.GrandParents
                     where gparents.UserID == TheUserID
                     select gparent.Name, // here's what's missing: the counts

          GridView1.DataSource = myOutput;
          GridView1.DataBind();

     }
}

Я боролся с SelectMany, Groupby, соединениями ... Я просто не получил результат, который мне нужен для этого, казалось бы, простого запроса.Любой вклад будет принята с благодарностью.

Спасибо

1 Ответ

6 голосов
/ 14 октября 2010
var myOutput = from gparent in myEntities.GrandParents
               where gparent.UserID == TheUserID
               select new GrandParentViewModel
               {
                   Name = gparent.Name,
                   ChildrenCount = gparent.Children.Count(),
                   GrandChildrenCount = gparent.Children.SelectMany(c => c.GrandChildren).Count()
               };

Предполагается, что ваша Child сущность имеет навигационное свойство GrandChildren (здесь на самом деле имеет смысл имя Children world - дети детей = внуки).

В этом случае мы проектируемна GrandParentViewModel:

public class GrandParentViewModel
{
    public string Name { get; set; }
    public int ChildrenCount { get; set; }
    public int GrandChildrenCount { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...