Linq查询按字段分组计数

时间:2014-09-09 23:27:20

标签: c# linq

所以我一直试图让这个linq查询正确查询,但它只是按记录计算而不是重复输入。

var groupedList = from x in WarningList
group WarningList by new {etlTraceMessage.Message}
into grouped
select new {grouped.Key.Message, Count = grouped.Count()};

我试图得到像......一样的结果集。

15 - Missing ID
 4 - Invalid use of term
 1 - Package missing

但它只能查询记录数而不是每种类型的数量等等。

20 - Missing ID

Warninglist只是一个带有一些属性的observablecollection类

由于

1 个答案:

答案 0 :(得分:3)

我不确定您的WarningList类是什么,但我假设它有一个Message属性,并且您希望通过此属性对列表进行分组:

public class Warn
{
    public string Message {get; set;}
    //other properties
}

如果是这样 - 您可以轻松地对列表进行分组:

var groupedList = WarningList
                    .GroupBy(x => x.Message)
                    .Select(g => new {Key = g.Key, Count = g.Count()});

或者如果你想要另一个sintax:

var groupedList = from x in WarningList
                    group x by x.Message into grouped
                    select new { Key = grouped.Key, Count = grouped.Count()};

在您的方法中,您尝试按复合键进行分组(这是不必要的)但使用了一些不同的局部变量 - 未链接到您的查询(etlTraceMessage.Message)。但如果你以后需要它:

var groupedList = from x in WarningList
                    group x by new { x.Message } into grouped
                    select new { Key = grouped.Key.Message, Count = grouped.Count()};

以防万一 - msdn has a lot of examples