GroupBy一个绑定列表

本文关键字:一个 绑定 列表 GroupBy | 更新日期: 2023-09-27 18:14:18

我为我的用户创建了一个message类:

public class Message
{
    [DisplayName("Message")]
    public string shortContent { get; set; }
    [DisplayName("Line")]
    public int line { get; set; }
    [DisplayName("File Name")]
    public string file { get; set; }
    [DisplayName("Level")]
    public MessageLevel level { get; set; }
    ...
}
public enum MessageLevel
{
    Information,
    Warning,
    Error
}

为了显示给我喜欢的用户,我将它绑定到一个自定义绑定列表(为了允许他们对消息进行排序)。

我希望能够根据某些属性(level, shortContent本质上)对消息进行分组,但我找不到任何简单的方法来使用Linq

我试过使用GroupBy,但运气不好。我想要做的是转换这个:

Message                     Line    File Name           Level   Date                Read    Full message
The device is not ready.    46      OpenFileControl.cs  Error   24/09/2015 3:01     True    
The device is not ready.    46      OpenFileControl.cs  Error   24/09/2015 3:02     True    
Some Random message.        -1      Unkown              Error

:

Message                     Count
The device is not ready.    2
Some Random message.        1

GroupBy一个绑定列表

使用GroupBy应该可以工作。记住你是而不是修改你的绑定列表,所以任何绑定到它的东西都不会注意到你正在分组。

list.GroupBy(x => x.Message)
    .Select(x => new { Message = x.Key, Count = x.Count() })