如何获取不同的行以及Linq中相同行的计数?

时间:2012-02-10 23:28:56

标签: c# linq

在SQL中,这对我来说很容易......

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 Table Storage。我正在使用内存中的数据。

2 个答案:

答案 0 :(得分: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()
    }

答案 1 :(得分: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());
}