linq:祖父母 - 父母 - 孩子查询

时间:2010-10-14 07:26:47

标签: linq entity-framework

我有一个实体模型,我一直在寻找一个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 个答案:

答案 0 :(得分:6)

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世界在这里更有意义 - 儿童的孩子=孙子女。)

在这种情况下,我们投射到GrandParentViewModel

public class GrandParentViewModel
{
    public string Name { get; set; }
    public int ChildrenCount { get; set; }
    public int GrandChildrenCount { get; set; }
}