GroupBy bindingList

时间:2015-09-24 13:39:34

标签: c# linq bindinglist

我为我的用户创建了一个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
}

要向我喜爱的用户显示此内容,我将其绑定到自定义绑定列表(以便允许他们对消息进行排序)。

我希望能够通过某些属性(levelshortContent基本上)对邮件进行分组,但我无法通过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

1 个答案:

答案 0 :(得分:1)

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

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