2011-03-18 43 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() }