LINQ获取第二级细节表的计数

时间:2011-06-23 20:06:07

标签: linq count group-by nested subquery

我正在尝试从详细信息表中获取记录的数量,它是LINQ中的详细信息表,我正在遇到路障。

假设我在这个结构中有3个表:

Header
    Detail
        Items

我希望看到所有标题项目的详细信息和计数项目。

from h in Header select new {
  h.Name,
  h.IsEnabled,
  DetailCount = h.Details.Count(),
  ItemCount = h.Details.Items.Count() <---- Here's the problem
}

1 个答案:

答案 0 :(得分:2)

您可以使用SelectMany

from h in Header select new {
  h.Name,
  h.IsEnabled,
  DetailCount = h.Details.Count(),
  ItemCount = h.Details.SelectMany(d => d.Items).Count()
}

或者如果您愿意,可以将每个细节的项目数量相加:

from h in Header select new {
  h.Name,
  h.IsEnabled,
  DetailCount = h.Details.Count(),
  ItemCount = h.Details.Sum(d => d.Items.Count())
}