所以我一直试图让这个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类
由于
答案 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。