如何返回具有分组行数加上分组依据字段值的对象

本文关键字:字段 对象 返回 何返回 | 更新日期: 2023-09-27 18:00:46

我在 C#、.NET 4 上,使用 LINQ 我需要对表中的所有行进行分组,由于字段固定,返回该 groupby 字段值以及由于该子句而分组的每一行数。

我写的代码是:

var result = (from p in db.MyPersons
              group p by new { p.IDPerson } into g
              select new
              {
                  IDPerson = g.Key.IDPerson,
                  Counter = g.Sum(p => p.IDPerson)
              });

但它在新生成的对象中返回IDPersonCounter字段的IDPerson

有什么错误?似乎Sum不和?

如何返回具有分组行数加上分组依据字段值的对象

如果您希望组中的行,请改用Count:(请注意,您也不需要匿名类型(

var result = (from p in db.MyPersons
              group p by p.IDPerson into g
              select new
              {
                  IDPerson = g.Key,
                  Counter = g.Count()
              });

Sum会将组中的所有IDPerson相加 - 如果组中只有一个项目,则返回与IDPerson相同的值。

如果要

按多个列进行分组,可以执行以下操作:

var result = (from p in db.MyPersons
              group p by new{ p.IDPerson, p.Surname} into g
              select new
              {
                  IDPerson = g.Key,
                  Surname=g.Surname,
                  Counter = g.Count()
              });