2012-02-10 15 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()); 
} 
相关问题