【问题标题】:How do I convert a nested SQL select statement with multiple aggregate functions into LINQ?如何将具有多个聚合函数的嵌套 SQL 选择语句转换为 LINQ?
【发布时间】:2013-05-16 23:53:32
【问题描述】:

我有一个表,其中每一行都包含一个团队 ID、一个用户 ID 和一个布尔值,指示该用户是否是代表。用户可以是多个团队的代表,并且团队可以拥有多个代表。我试图找出谁是最多产的代表,以及他们代表了多少支球队。实际上,我并不在乎它是谁,只关心他们代表了多少个团队。

我可以用下面的 SQL 轻松地做到这一点,但我不知道如何在 LINQ 中编写它。如果可能,我想避免使用存储过程,因为它们在这个应用程序中很少使用,我想保持一致性。

SELECT MAX(a.RepCount) as TeamMaxRepCount
FROM
(SELECT DelegateUserID, COUNT(*) AS RepCount
FROM TeamDelegates
GROUP BY DelegateUserID) as a

【问题讨论】:

  • 也许:int result = TeamDelegates.GroupBy(x => x.DelegateUserID).Max(g => g.Count());

标签: c# .net sql linq


【解决方案1】:

反过来。例如:

var x = TeamDelegates.GroupBy(t => t.DelegateUserID)
                     .Select(t => new {
                                          DelegateUserID = t.Key,
                                          RepCount = t.Count()
                                      })
                     .Max(t => t.RepCount);

这是您的 SQL 查询的准确表示。这甚至可以像他的评论中提到的sa_ddam213 那样简单化。

【讨论】:

  • 不应该是DelegateUserID = t.Key吗?
  • @recursive,当然应该!所以,你为什么不这样写呢?? ;-) 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 2011-01-24
  • 2021-03-13
  • 1970-01-01
相关资源
最近更新 更多