如何返回具有分组行数加上分组依据字段值的对象
本文关键字:字段 对象 返回 何返回 | 更新日期: 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)
});
但它在新生成的对象中返回IDPerson
和Counter
字段的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()
});