Linq to sql 如何在LINQ中编写SQL查询选择计数组?

Linq to sql 如何在LINQ中编写SQL查询选择计数组?,linq-to-sql,Linq To Sql,我有这个查询,但当我试图在LINQ中编写等价物时,我得到了不正确的SQL 我的问题是: SELECT COUNT(*) FROM tableName GROUP BY ColumnId 我试着把它写成: tableName.GroupBy(x => x.ColumnId).Count() 但在LINQPad中,它正在生成SQL: SELECT COUNT(*) AS [value] FROM ( SELECT NULL AS [EMPTY] FROM [tableName] AS [t

我有这个查询,但当我试图在LINQ中编写等价物时,我得到了不正确的SQL

我的问题是:

SELECT COUNT(*)
FROM tableName
GROUP BY ColumnId
我试着把它写成:

tableName.GroupBy(x => x.ColumnId).Count()
但在LINQPad中,它正在生成SQL:

SELECT COUNT(*) AS [value]
FROM (
SELECT NULL AS [EMPTY]
FROM [tableName] AS [t0]
GROUP BY [t0].[ColumnId]
) AS [t1]

我做错了什么?谢谢

您的LINQ查询正在计算组数,但SQL查询正在按组生成计数。你想要

var counts = tableName.GroupBy(x => x.ColumnId)
                      .Select(g => new { g.Key, Count = g.Count() });
按组获取计数

请注意,如果您想要完全相同的SQL

var counts = tableName.GroupBy(x => x.ColumnId)
                      .Select(g => g.Count());

上面的第一个示例应该更有用一些,因为它还提供了每个组的ID。

尝试
tableName.GroupBy(x=>x.ColumnId)。选择(x=>x.Count())