2012-02-10 17 views
1

在SQL這將是容易的,我...如何獲得不同的行以及Linq中相同行的計數?

SELECT browser, browser_version, page_name, COUNT(*) as cnt 
FROM traffic 
GROUP BY browser, browser_version, page_name 

這將返回一個排的瀏覽器,BROWSER_VERSION,PAGE_NAME的每一個獨特的組合,以重複的計數一起。

我想在Linq做同樣的事情,但我不知道該怎麼做。

順便說一下,在這種情況下,我沒有使用SQL,因爲數據不是來自SQL。它來自Windows Azure表存儲。我正在處理內存中的數據。

+0

可能相關:http://stackoverflow.com/questions/706866/linq-to-dataset-distinct-by-multiple-columns – 2012-02-10 23:31:36

+0

和:http://stackoverflow.com/questions/1869001/linq-group-by-multiple-fields-syntax-help – 2012-02-10 23:33:21

+0

@ M.Babcock - 該主題只顯示如何獲得不同的行......它沒有得到一個計數。 – 2012-02-10 23:33:38

回答

2
var query = 
    from t in traffic 
    group t by new { t.browser, t.browser_version, t.page_name } into g 
    select new 
    { 
     g.Key.browser, 
     g.Key.browser_version, 
     g.Key.page_name, 
     Count = g.Count() 
    } 
+0

謝謝你。我的問題比我給出的例子複雜一點。我也必須得到每個分組的最新日期。但你的解決方案是完美的,並幫助我全力以赴。 – 2012-02-11 21:10:27

1

你會使用類似的方法:

var results = traffic.GroupBy(t => new { t.browser, t.browser_version, t.page_name }); 

foreach(var group in results) 
{ 
    Console.WriteLine("{0}/{1}/{2} has {3} items.", 
      group.Key.browser, 
      group.Key.browser_version, 
      group.Key.page_name, 
      group.Count()); 
} 
相關問題