实体框架在哪里,订单和组

Viv*_*ndi 19 c# linq entity-framework

我正在使用以下LINQ从表中选择数据:

(from m in entity.Results
where m.Group == 0 ||
m.Group == 1
orderby m.Points descending
select m);
Run Code Online (Sandbox Code Playgroud)

这给了我所有处于第1组或第2组的用户的结果.我可以显示他们拥有的分数.但这显示了他们分别在第1组和第2组中得到的分数.

我如何对它们进行分组并显示它们的总分?所以不是这个(我现在拥有的):

user1 - group1 - 10
user1 - group2 - 7
user2 - group1 - 7
user2 - group2 - 5
Run Code Online (Sandbox Code Playgroud)

我要这个:

user1 - total: 17
user2 - total: 12
Run Code Online (Sandbox Code Playgroud)

我如何调整我的查询以获得这样的结果集?

dav*_*d.s 22

您需要对用户进行分组,然后使用Sum来计算TotalPoints:

from m in entity.Results
where m.Group == 0 || m.Group == 1
group m by m.User into g
let TotalPoints = g.Sum(m => m.Points)
orderby TotalPoints descending
select new { User = g.Key, Username = g.Key.Username, TotalPoints };
Run Code Online (Sandbox Code Playgroud)


Asi*_*taq 15

entity.Results
      .Where(m => m.Group == 0 || m.Group == 1)
      .GroupBy(m => m.UserID)
      .Select(m => new { User = m.Key, TotalPoints = m.Sum(v => v.Points) })
      .OrderByDescending(m => m.TotalPoints);
Run Code Online (Sandbox Code Playgroud)