我有一个实体模型,我一直在寻找一个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,加入....我只是没有得到我需要的这个看似简单的查询结果。 任何意见都将不胜感激。
由于
答案 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; }
}