我有一个关于LINQ to SQL的问题。我想在LINQ中写下如下查询:选择不同的计数问题
SELECT DISTINCT([Column]),
COUNT([Column]) as [Count]
FROM [Table]
我可以在1查询中做到这一点吗?或者我必须首先选择不同的列,然后为每个选择计数?这看起来非常笨拙和沉重(n平方)。
我有一个关于LINQ to SQL的问题。我想在LINQ中写下如下查询:选择不同的计数问题
SELECT DISTINCT([Column]),
COUNT([Column]) as [Count]
FROM [Table]
我可以在1查询中做到这一点吗?或者我必须首先选择不同的列,然后为每个选择计数?这看起来非常笨拙和沉重(n平方)。
查询是不合法的,因为您使用的是聚合(COUNT
),而不在您要选择的列分组。
你需要的是这样的:
select [Column], Count([Column]) as [Count] from [Table] group by [Column]
这是很容易地在LINQ表达了SQL。
from x in context.Table
group x by x.Column into grp
select new { Column = grp.Key, Count = grp.Count() }
啊,是的,我已经忘记了关于这个组织..那么DISTINCT呢?我需要指定它吗? – 2011-03-18 02:36:04
@Steve:如果您正在分组,则不需要。 – 2011-03-18 02:38:44
尝试
from r in table
group r by r.Something into g
select new { Something = g.Key, Count = g.Count() }
顺便说一句,它被称为“LINQ to SQL”而不是“LINQ SQL”。 – 2011-03-18 02:31:01