Linq查询以按具有计数的字段分组

本文关键字:字段 查询 Linq | 更新日期: 2023-09-27 18:21:13

所以我一直在尝试让这个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只是一个具有几个属性的可观察集合类

感谢

Linq查询以按具有计数的字段分组

我不确定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有很多例子。