【问题标题】:C# lambda expression for getting the group by and count用于获取分组和计数的 C# lambda 表达式
【发布时间】:2014-06-13 14:32:41
【问题描述】:

我有 C# 数据并想使用 Normal 数据,如下所示

ID           Count   Client      MessageType
1   100 MegaTech    Missing SO
2   100 MegaTech    Not shipped
3   100 NIXIMIXI     No PDF
4   100 MegaTech    Missing SO
5   100 NIXIMIXI     Not shipped
6   100 MegaTech    No PDF
7   100 NIXIMIXI    Other
8   100 MegaTech    Other
9   100 MegaTech    No PDF
10  100 NIXIMIXI    Missing SO
11  100 MegaTech    Not shipped
12  100 NIXIMIXI    No PDF
13  100 MegaTech    Missing SO
14  100 NIXIMIXI    Not shipped
15  100 NIXIMIXI    No PDF
16  100 MegaTech    other
17  100 NIXIMIXI    other
18  100 NIXIMIXI    other

所以我想从下面的列表中删除,并且消息类型其他可能包含空格或空值。

ID       Count   Client      MessageType
1   100 MegaTech    Missing SO
2   100 MegaTech    Missing SO
3   100 MegaTech    No PDF
4   100 MegaTech    No PDF
5   100 MegaTech    No PDF
6   100 MegaTech    Not shipped
7   100 MegaTech    Not shipped
8   100 MegaTech    Other
9   100 MegaTech    Other
10  Total For   9      Total Items    900
11  100 NIXIMIXI    Missing SO
12  100 NIXIMIXI    Missing SO
13  100 NIXIMIXI    No PDF
14  100 NIXIMIXI    No PDF
15  100 NIXIMIXI    Not shipped
16  100 NIXIMIXI    Not shipped
17  100 NIXIMIXI    other
18  100 NIXIMIXI    other
19  100 NIXIMIXI    other

20  Total For   9      Total Items  900

我想为此使用 Linq 或 Lambda 表达式。 我有这样的使用,但不知道如何放置计数列。

 listEOMRep = listEOMRep.OrderBy(x => x.client).ThenBy(x => x.MessageType).ToList();

【问题讨论】:

    标签: linq c#-4.0 lambda


    【解决方案1】:

    这并不完全如您所愿,但我猜它可以完成工作:

    void Main()
    {
        var source = new List<CustomObject>() 
        {
            new CustomObject() {Id = 1, Count = 100, Client = "MegaTech", MessageType = "Not Shipped" },
            new CustomObject() {Id = 2, Count = 250, Client = "NIXIMIXI", MessageType = "Not Shipped" },
            new CustomObject() {Id = 3, Count = 45, Client = "NIXIMIXI", MessageType = "No PDF" },
            new CustomObject() {Id = 4, Count = 10, Client = "MegaTech", MessageType = "Not Shipped" },
            new CustomObject() {Id = 5, Count = 100, Client = "MegaTech", MessageType = "No PDF" },
            new CustomObject() {Id = 6, Count = 100, Client = "NIXIMIXI", MessageType = "Not Shipped" },
            new CustomObject() {Id = 7, Count = 100, Client = "NIXIMIXI", MessageType = "Not Shipped" },
            new CustomObject() {Id = 8, Count = 140, Client = "MegaTech", MessageType = "other" }
        };
    
        var result = source.OrderBy(x => x.Client)
                           .ThenBy (x => x.MessageType)
                           .GroupBy (s => s.Client)
                           .Select (s => new {
                                Key = s.Key,
                                Object = s,
                                TotalFor = s.Count(),
                                TotalItems = s.Sum(x => x.Count)
                           })
                           .Dump();
    }
    
    public class CustomObject
    {
        public int Id { get; set; }
        public int Count { get; set; }
        public string Client { get; set; }
        public string MessageType { get; set; }
    }
    

    输出:

    【讨论】:

      猜你喜欢
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多