2011-03-18 42 views
0

我有一个关于LINQ to SQL的问题。我想在LINQ中写下如下查询:选择不同的计数问题

SELECT DISTINCT([Column]), 
     COUNT([Column]) as [Count] 
FROM [Table] 

我可以在1查询中做到这一点吗?或者我必须首先选择不同的列,然后为每个选择计数?这看起来非常笨拙和沉重(n平方)。

+0

顺便说一句,它被称为“LINQ to SQL”而不是“LINQ SQL”。 – 2011-03-18 02:31:01

回答

2

查询是不合法的,因为您使用的是聚合(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() } 
+0

啊,是的,我已经忘记了关于这个组织..那么DISTINCT呢?我需要指定它吗? – 2011-03-18 02:36:04

+0

@Steve:如果您正在分组,则不需要。 – 2011-03-18 02:38:44

1

尝试

from r in table 
group r by r.Something into g 
select new { Something = g.Key, Count = g.Count() }