zoukankan      html  css  js  c++  java
  • c# 通过GroupBy 进行分组

    有时候我们需要数据根据一些字段进行分组,这时候用orderBy很方便。不多说了。直接上代码:

     class Ma
            {
                public int number { get; set; }
                public string name { get; set; }
    
                public static List<Ma> ToThis()
                {
                    List<Ma> ls = new List<Ma>()
                    {
                        new Ma() { number = 1, name = "第一组1" },
                         new Ma() { number = 1, name = "第一组ss" },
                          new Ma() { number = 1, name = "第一组rr" },
                           new Ma() { number = 3, name = "第三组ss" },
                            new Ma() { number = 3, name = "第三组option" },
                             new Ma() { number = 2, name = "第二组cake" },
                     };
                    return ls;
                }
            }
    
        //需要分组成的对象,按照number进行分组
            public class GroupMa
            {
                public int number { get; set; }
                public List<string> names { get; set; }
            }
    
            [TestMethod]
            public void TestGroup()
            {
                List<Ma> ls = Ma.ToThis();
                //List<GroupMa> groupDAta =
                //   (from Ma maObj in ls
                //    group maObj by maObj.number into gData
                //    select new GroupMa
                //    {
                //        number = gData.FirstOrDefault().number,
                //        names = gData.Select(c => c.name).ToList()
                //    }).ToList();
                var data = ls.GroupBy(f => f.number)
                    .Select(g => new GroupMa
                    {
                        number = g.FirstOrDefault().number,
                        names = g.Select(o => o.name).ToList()
                    });
    
    
                Console.Write("");
            }

    分组后形成的新的数据结构:

    当然,对象中嵌套多层对象,分组也是可以的。

     orderDTO.sampleGroup = orderDTO.sampleInfo.GroupBy(g => g.sampleCode).Select(o => new SampleInfoGroup
                            {
                                SampleId = o.FirstOrDefault().sampleId,
                                SampleCode = o.Key,
                                sampleStatus = o.FirstOrDefault().sampleStatus,           //通过GroupBy进行分组,分组后必须用对象来装
                                CExpressCompany = o.FirstOrDefault().CExpressCompany,
                                CExpressNumber = o.FirstOrDefault().CExpressNumber,
                                Consignor = o.FirstOrDefault().Consignor,
                                outSampleStatus = o.FirstOrDefault().sampleStatus.ToString(),
                                GroupInfo = o.Select(s => new InfoGroup
                                {
                                    mark = s.mark,
                                    productName = s.productName,
    
                                }).ToList()
                            }).ToList();

    还是很实用的一个东西!

  • 相关阅读:
    OC-字典
    作业
    block语法排序 遍历
    oc-NSArray
    oc之获取系统当前时间的方法
    修改mysql的默认字符集
    mysql查询结果添加序列号
    PHP Socket 编程过程详解
    一篇详细的 Mysql Explain 详解
    阿里云云主机挂载数据盘,格式化硬盘(新购云主机)(转)
  • 原文地址:https://www.cnblogs.com/likui-bookHouse/p/9056701.html
Copyright © 2011-2022 走看看