• 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();

    还是很实用的一个东西!

  • 相关阅读:
    Linux防火墙使用配置
    es安装笔记
    git仓库免密码登陆配置
    swgger前后端分离api生成
    关于redis
    学习笔记关于springboot
    idea 安装记录
    随记
    开课吧--Python数据分析--第4节 数据七十二变--互动练习:如果你不需要,就让它消失!
    jupyter使用方法
  • 原文地址:https://www.cnblogs.com/likui-bookHouse/p/9056701.html
Copyright © 2020-2023  润新知