我有一個關於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