有时候我们需要数据根据一些字段进行分组,这时候用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 = , name = "第一组1" },
new Ma() { number = , name = "第一组ss" },
new Ma() { number = , name = "第一组rr" },
new Ma() { number = , name = "第三组ss" },
new Ma() { number = , name = "第三组option" },
new Ma() { number = , 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();

还是很实用的一个东西!

c# 通过GroupBy 进行分组的更多相关文章

  1. DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法

    DataTable分组统计: .用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new ...

  2. LINQ技巧:如何通过多次调用GroupBy实现分组嵌套

    问题如上,解决如下,目标在最下面:结果: using System; using System.Linq; using System.Collections.Generic; namespace Co ...

  3. js实现工具函数中groupBy数据分组

    数据 this.tableData = [ {id: 1, name: '测试', number: 1, price: 0}, {id: 2, name: '测试', number: 1, price ...

  4. C# GroupBy分组的问题和解决

    起因 今天在公司做一个需求的时候,写的是面条代码,一个方法直接从头写到尾,其中用到了GroupBy,且GroupBy的KeySelector是多个属性而不是单个属性. 但是公司最近推行Clean Co ...

  5. Python数据聚合和分组运算(1)-GroupBy Mechanics

    前言 Python的pandas包提供的数据聚合与分组运算功能很强大,也很灵活.<Python for Data Analysis>这本书第9章详细的介绍了这方面的用法,但是有些细节不常用 ...

  6. pandas 取 groupby 后每个分组的前 N 行

    原始数据如下: (图是从 excel 截的,最左1行不是数据,是 excel 自带的行号,为了方便说明截进来的) 除去首行是标题外,有效数据为 28行 x 4列 目前的需求是根据 partition ...

  7. 利用python进行数据分析之数据聚合和分组运算

    对数据集进行分组并对各分组应用函数是数据分析中的重要环节. group by技术 pandas对象中的数据会根据你所提供的一个或多个键被拆分为多组,拆分操作是在对象的特定轴上执行的,然后将一个函数应用 ...

  8. Pandas系列(九)-分组聚合详解

    目录 1. 将对象分割成组 1.1 关闭排序 1.2 选择列 1.3 遍历分组 1.4 选择一个组 2. 聚合 2.1 一次应用多个聚合操作 2.2 对DataFrame列应用不同的聚合操作 3. t ...

  9. 《python for data analysis》第九章,数据聚合与分组运算

    # -*- coding:utf-8 -*-# <python for data analysis>第九章# 数据聚合与分组运算import pandas as pdimport nump ...

随机推荐

  1. ListView中的TextView实现跑马灯效果

    1.TextView首先添加android:ellipsize="marquee"   android:marqueeRepeatLimit="marquee_forev ...

  2. 全网最详细的Sublime Text 3的设置字体及字体大小(图文详解)

    不多说,直接上干货! 前期博客 全网最详细的Windows里下载与安装Sublime Text *(图文详解) 全网最详细的Sublime Text 3的激活(图文详解) 你也许是如下的版本:   点 ...

  3. ubuntu-12.04.5下编译openjdk8

    bash ./configure --with-target-bits=64 --with-boot-jdk=/usr/java/jdk1.7.0_80/ --with-debug-level=slo ...

  4. JavaScript -- Window-Confirm

    -----032-Window-Confirm.html----- <!DOCTYPE html> <html> <head> <meta http-equi ...

  5. Linux信号和trap命令的使用

    目录 信号介绍 信号列表 控制信号 Ctrl+c显示指定内容 使Ctrl+c无任何操作 处理多个信号 处理所有信号 恢复信号 实现跳板机(实例) 信号介绍 运行Shell脚本时,如果按下快捷键Ctrl ...

  6. 系统启动时队列自动下单--ServletContextListener

    package com.liying.pear.queue; import javax.servlet.ServletContextEvent; import javax.servlet.Servle ...

  7. python 详解正则表达式的使用(re模块)

    一,什么是正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件 ...

  8. javascript 创建对象方式

    本文主要是对<JavaScript高级程序设计>第六章(面向对象的程序设计)的总结,书上的这章至少看了4遍是有的.该章主要讲对象的创建与继承.其中创建对象和继承方式至少6种,再加上一些方法 ...

  9. Spring学习之路-从放弃到入门

    AOP:方法拦截器 IOC:类管理容器 主要讲讲这一天看Spring视频学到的东西,以下的叫法全是自创的. 1.类实例管理容器 关于Spring,首先是对类的管理,在常规情况,生成一个类需要调用new ...

  10. Spring学习之路-从入门到放弃

    后台框架是真难入门啊!!!IDE的使用,环境的搭建,框架下载,上手,每一步都恶心人. 花了整整两天,才学会用idea,并且初步了解了maven(TM就是一个npm),然后跟着下载了对应的jar包,搭建 ...