C#中对泛型List进行分组输出元素

背景:在输出列表时,往往需要按照某一字段进行分组,比如在输出城市列表时,按照首字母进行分组,输出学生列表时,按照年级进行分组,然后再对分组的结果按照其他的字段进行排序。

如存在以下STU学生类,代码如下:

1     public class STU
2     {
3         public int ID { get; set; }
4         public string Name { get; set; }
5         public int Age { get; set; }
6         public string City { get; set; }
7     }

存在如下学生列表:

1             List<STU> stuList = new List<STU>()
2             {
3                 new STU{ID=1,Name="Lily",Age=18,City="NewYork"},
4                 new STU{ID=2,Name="Lucy",Age=20,City="NewYork"},
5                 new STU{ID=1,Name="LiLei",Age=18,City="BeiJIng"}
6             };

先按照城市进行分组,在对同一城市中的学生,按照年龄进行排序,分别输出,代码如下:

1             foreach (IGrouping<string,STU> group in stuList.GroupBy(c=>c.City))
2             {
3                 Console.WriteLine("当前的城市为" + group.Key);
4                 foreach (STU stu in group.OrderBy(a=>a.Age))
5                 {
6                     Console.Write(stu.Name+";");
7                 }
8                 Console.WriteLine();
9             }

   注意,IGroupoing存在两个参数,第一个参数对应于分组字段的类型,也就是说如果按照城市进行分组,则第一个参数的类型应该是string,如果是按照年龄进行分组,参数类型就应该是int。第二个参数,对应于List元素的类型,本例中为STU。

转载于:https://www.cnblogs.com/SharpL/p/4675645.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分页3

http://www.cnblogs.com/ChrisLee2011/p/4288194.html 页面的HTML部分如下&#xff1a; < div class "tableContainer"> < input id "currentPage" type "hidden" value " ViewData[ "currentPage"] "/> < i…

最优化课堂笔记01: 第一章 最优化的基本概念

第一章 最优化的基本概念 1.最优化求解的数学模型建立 2.例题&#xff08;考试第一大题&#xff1a;数学模型建立&#xff09; 解析&#xff1a;优化变量、目标函数&#xff08;一般取最小化&#xff09;、约束条件 注意&#xff1a; 1&#xff09;约束条件一般形式为&#…

面向对象中构造函数的小练习

//写一个Ticket类&#xff0c;有一个距离属性&#xff08;本属性只读&#xff0c;在构造方法中赋值&#xff09;&#xff0c;不能为负数//有一个价格属性&#xff0c;价格属性为只读&#xff0c;并且根据距离distance计算价格Price(1元/公里)//0--100公里 票价不打折//101-20…

EIGRP非等价负载均衡

1、等价负载均衡 当到达目的地有多条路径时&#xff0c;而有多条路径的metric值一样&#xff0c;这时就可以做等价负载均衡&#xff0c;让数据包均衡转发&#xff0c;不过要看该路由器的转发方式&#xff0c;如果是快速转发方式&#xff0c;这种方式无用&#xff08;本地产生的…

ubuntu100%快速安装搜狗输入法

1、进入搜狗官方网站&#xff0c;下载最新版本的for ubuntu输入法deb安装包 2、下载完成以后&#xff0c;进入下载好的文件目录&#xff0c;在空白处点击鼠标右键&#xff0c;打开终端 在终端窗口输入如下的指令开始安装搜狗拼音输入法。 #sudo dpkg -i sogoupinyin_2.2.0.01…

提升权限终极技巧

文章作者&#xff1a;WekweN本篇文章结合了许多高手提升权限的技巧和自己的一些想法 当我们取得一个webshell时候&#xff0c;下一部要做的就是提升权限 个人总结如下&#xff1a; 1: C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\ 看能否跳转到…

移动设备页面高度不足时min-height 的尴尬处理

移动设备页面高度不足时min-height 的尴尬处理 在做html5的页面时&#xff0c;经常遇到页面内容太少撑不起来整个手机屏幕的高度。 我们经常使用min-height来处理&#xff0c;比如min-height:568px; 对应的是iPhone5 的高度&#xff1b; 而这样iPhone6plus下方就会出现空白。 而…

最优化课堂笔记02:第二章 线性规划

第二章 线性规划&#xff08;重点&#xff1a;单纯形法&#xff09; 1.线性规划问题及其模型&#xff08;重点&#xff1a;标准形式&#xff09; 题型&#xff1a;是否为标准形式&#xff1f;不是的话化为标准形式&#xff01; 1&#xff09;问题的提出 提出问题&#xff1…

客户端是选择Java Swing还是C# Winform

登录 | 注册 mentat的专栏 目录视图摘要视图订阅【专家问答】韦玮&#xff1a;Python基础编程实战专题 【知识库】Swift资源大集合 【公告】博客新皮肤上线啦 快来领福利&#xff1a;C币、机械键盘 客户端是选择Java Swing还是C# Winform 标签&#xff1a; swi…

linux下怎么编译动态库并且调用

样例描述&#xff1a;我有一个main.cpp文件件&#xff0c;add.cpp &#xff0c;add.h &#xff0c;subtract.cpp &#xff0c;subtract.h文件&#xff0c;main.cpp里面调用加法和减法的函数&#xff0c;把加法和减法准备编译成动态库 libalgorithm.so&#xff0c;然后main调用这…

NDK编译错误expected specifier-qualifier-list before...

基于cocos2d-x在win7下开发android程序&#xff0c;一般都会选择先在win32下调试&#xff0c;等最后再在eclipse环境下安装测试到真机上。期间&#xff0c;要使用到cocos2d-x提供的一些简化方案进行NDK编译&#xff08;一般使用gcc)。但是&#xff0c;VISUAL STUDIO 2010 C编译…

学习笔记(28):Python网络编程并发编程-死锁与递归锁

立即学习:https://edu.csdn.net/course/play/24458/296445?utm_sourceblogtoedu 1.死锁&#xff08;Lock()的局限性&#xff09; 知识点&#xff1a;Lock(&#xff09;只能被获得&#xff08;acquire&#xff09;一次&#xff0c;要想再次获得必须释放后才能获得 1)死锁情况…

VScode 快速更改编码格式

1、view下的 Cmmand Palette 下的Change file Encoding simplifiled chinese GB2312

iostat

r/s: 每秒读取的请求数。 w/s: 每秒写入的请求数。 Avgqu-sz: 平均I/O队列长度 Await:平均每次设备I/O操作的等待时间(毫秒) Svctm:平均每次设置I/O操作的服务时间(毫秒)&#xff0c;Svctm越接近Await则说明等待时间少 %util:表示设备的繁忙程度&#xff0c;80%表示设备设备已经…

学习笔记(29):Python网络编程并发编程-信号量

立即学习:https://edu.csdn.net/course/play/24458/296446?utm_sourceblogtoedu 信号量&#xff08;了解&#xff09;&#xff1a;也是一把锁semaphore 1. from threading import Thread,Semaphore,currentThread import time#定义信号量(3把锁) sm Semaphore(3)def task()…

Ajax基础2

什么是服务器 网页浏览过程的分析 如何配置自己的服务器程序&#xff08;AMP&#xff09; 什么是Ajax 无刷新数据读取 异步&#xff0c;同步 Ajax基础(2) 使用Ajax 基础请求显示txt的文件 字符集编码 缓存&#xff0c;阻止缓存 动态数据&#xff0c;请求js或&#xff08;json&a…

动态SQL应用(成绩排名)

Code-- 年级排名和班级排名declare sql varchar(4000),nclassid int,nexamid int select sql select nclassid38 select nexamid19select sqlsqlmax(case scoursename when scoursename then descore else 0 end) scoursename,from (select distinct scoursename from t_card_…

《将进酒》——李白

君不见&#xff0c;黄河之水天上来&#xff0c;奔流到海不复回。 君不见&#xff0c;高堂明镜悲白发&#xff0c;朝如青丝暮成雪。 人生得意寻尽欢&#xff0c;莫使金樽空对月。 天生我材必有用&#xff0c;千金散尽还复来。 烹羊宰牛且为乐&#xff0c;会须一饮三百杯。 岑夫子…

关于windows上的exe可执行程序在黑色窗口运行时候不能点击屏幕,要不然会暂定程序

关于windows上的exe可执行程序在黑色窗口运行时候不能点击屏幕&#xff0c;要不然会暂定程序 2019-12-3 记录

学习笔记(30):Python网络编程并发编程-Event事件

立即学习:https://edu.csdn.net/course/play/24458/296447?utm_sourceblogtoedu threading.Event事件 1.概念及功能&#xff1a;主要是完成线程之间的通信&#xff0c;将另一个线程的运行状态通知给另一个线程 2.使用场景&#xff1a; 1&#xff09;客户端运行时等待服务器启…