C#.net工作笔记001---Linq对象查询,排序,分组,去重在工作中的使用_随时更新
技术交流QQ群【JAVA,.NET,BigData,AI】:170933152
1.对list中的某两个字段按照升序排序
testlist=testlist.OrderBy(s=>new{s.cd1,s.cd2}).ToList<TestDto>();
List<Student> stu = (List<Student>)Session["StudentList"];
下面是详细一点的排序:
Linq表达式:
//按学号降序
List<Student> stuList = (from s instu orderby s.stuNOdescending select s).ToList<Student>();
//按学号升序
List<Student> stuList = (from s instu orderby s.stuNO select s).ToList<Student>();
使用Lambda表达式排序: //按学号降序
单字段:List<Student> stuList= stu.OrderByDescending(s=> s.orderid).ToList<Student>();
多字段:List<Student> stuList= stu.OrderByDescending(s=> new{s.stuNO,s.stuName}).ToList<Student>();
//按学号升序
单字段:List<Student> stuList= stu.OrderBy(s=> s.stuNO).ToList<Student>();
多字段:List<Student> stuList= stu.OrderBy(s=> new{s.stuNO,s.stuName}).ToList<Student>();
多字段主次顺序排序情况,先按no排序,再按name排序
List<Student> stuList= stu.OrderBy(s=> s.stuNO).ThenBy(s=> s.stuName).ToList<Student>();
List<Student> stuList= stu.OrderBy(s=> new{ s.stuNO }).ThenBy(s=> new{s.stuName}).ToList<Student>();
//2.先排序再分组
testlist =(List<TestDto>)(from m in testlist orderby m.orderno group m by new {m.nroderno , m.ordernodtl} into mygroup select mygroup);
//3.获取一个list中的某个字段最大的值
(from c in biaoming where c.名称== 条件 select c.ManualID).Max();
//4.按照条件查询,先查询再排序
LstTmp = (from m in TmpLst where (m.testcd == "1") && (m.testcd2 == "2") select m).ToList<TestDto>().OrderBy(s => new { s.sor1, s.sort2 }).ToList<TestDto>();
//5.LINQ中如何按实体的某个属性去重
问题描述
比如有如下实体集合:
Person1: Id=1, Name="Test1"
Person2: Id=1, Name="Test1"
Person3: Id=2, Name="Test2"
如何使用LINQ按 Person.Id 去重,返回的集合只包含 Person1 和 Person3 ?
方案一
创建一个静态扩展类:这个主意一下,这个可以放到一个命名空间下,然后再写一个类:
像下面这样,这样才能用:
static class ListExtendMethod{public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector){HashSet<TKey> seenKeys = new HashSet<TKey>();foreach (TSource element in source){if (seenKeys.Add(keySelector(element))){yield return element;}}}}
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{HashSet<TKey> seenKeys = new HashSet<TKey>();foreach (TSource element in source){if (seenKeys.Add(keySelector(element))){yield return element;}}
}
调用方法:
var query = people.DistinctBy(p => p.Id);
如果需要按多个属性去重,则可以使用匿名对象,如:
var query = people.DistinctBy(p => new { p.Id, p.Name });
方案二
List<Person> distinctPeople = allPeople.GroupBy(p => p.PersonId).Select(g => g.First()).ToList();
多属性去重:
List<Person> distinctPeople = allPeople.GroupBy(p => new {p.PersonId, p.FavoriteColor} ).Select(g => g.First()).ToList();
方案三
var uniquePeople = from p in peoplegroup p by new {p.ID} //or group by new {p.ID, p.Name, p.Whatever}into mygroupselect mygroup.FirstOrDefault();
方案四
Persons.ToLookup(p => p.Id).Select(coll => coll.First());
方案五
var result = people.Where(p => !people.Any(q => (p != q && p.Id == q.Id)));
C#.net工作笔记001---Linq对象查询,排序,分组,去重在工作中的使用_随时更新相关推荐
- C#.Net工作笔记003---异步编程async await_在开发中的使用经验_随时更新
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 private async void test(){ TestClient client =new ...
- Disruptor本地线程队列_实现线程间通信---线程间通信工作笔记001
Disruptor本地线程队列_实现线程间通信---线程间通信工作笔记001 看到同事用这个东西了,这个挺好用的说是,可以实现,本地线程间的通信,好像在c++和java中都可以用 现在没时间研究啊,暂 ...
- elasticsearch aggregations_elasticsearch 笔记三 之聚合查询之分组计数、平均数、最大值、script、最小值、总和...
本节 es 笔记目录如下: 分组计数 平均数 avg 最大值 max 最小值 min 总和 sum 此次笔记用到的数据还是前一节中导入的官方提供的bank数据,用到其他数据的,下面会提供导入方式. 首 ...
- elasticsearch 笔记三 之聚合查询之分组计数、平均数、missing值使用、最大值、使用script计算、最小值、总和
本节 es 笔记目录如下: 分组计数 平均数 avg 最大值 max 最小值 min 总和 sum 此次笔记用到的数据还是前一节中导入的官方提供的 bank 数据,用到其他数据的,下面会提供导入方式. ...
- java工作笔记017---java8新特性_使用lamda表达式进行List分组_排序_去重_随时更新
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这个电视购物项目后台采用java1.8编写,有些业务复杂的地方,使用lamda表达式可以简化开发 ...
- java 集合中对象的排序 和去重
对list 集合对象中 重复度数据进行排序 1.实体类 中 实现 Comparable 接口中的compareTo 方法 用 什么来比较 集合中的排序 2.对集合中的的对象进行去重,重写 hashCo ...
- MySQL核心查询-排序 分组 聚合 多表查询 合并查询 子查询
目录 一.单表查询 排序 聚合函数 分组 limit关键字 二.SQL约束 主键的自增 DELETE和TRUNCATE对自增长的影响 三.多表查询 外键约束 删除外键约束 多表查询的分类 内连接查询 ...
- Qt工作笔记-Qt元对象系统解析【2合1】
博文转载地址: https://blog.csdn.net/spwper/article/details/51332187 说Qt信号与槽是一个很好机制,不如说Qt的元对象系统很强大.这也是大家讲Qt ...
- 认识什么是运维中的CI/CD---持续集成交付工作笔记001
在软件开发中经常会提到持续集成Continuous Integration(CI)和持续交付Continuous Delivery(CD)这几个术语.但它们真正的意思是什么呢? 在谈论软件开发时,经常 ...
最新文章
- 计算机如何表示色彩?
- bash: ifconfig: command not found
- 文巾解题 557. 反转字符串中的单词 III
- gmail头像_Gmail与Google+进一步整合:可显示好友头像
- 小学 n 阶乘的后面包含多少零c语言,C语言---求n的阶乘后面有多少个连续的0
- OGNL表达式struts2标签“%,#,$”
- 数据库:MySQL相关知识整理,值得收藏!
- 10打开没有反应_【专利】表面施胶剂的反应装置
- 有没有用逆向算法恢复马赛克的可能性?
- maven环境、本地仓储配置(下载安装)idea配置maven
- sql server 2008完全卸载工具
- access简述报表的功能_报表的主要功能_access标签报表有什么作用
- 几个常用的C语言编程工具,极力推荐!
- 软路由cpu性能跑分
- google hacking 搜索技巧
- [Hi3751V350][Android9.0] 调试笔记 --- 添加并设置默认系统字库
- 冒泡排序算法(bubbling sort)
- Apache OpenNLP介绍(一)
- 如何用PS把图片中的人物剪掉
- 【unity】分享一个2D小游戏的完整制作教程——涂鸦跳跃demo
热门文章
- 单片机ADC采样算法----限幅滤波法
- HDU-2063-过山车(二分匹配)
- 吴恩达深度学习3.1笔记_Structuring Machine Learning Projects_机器学习策略(1)
- 创建XML文件以及XML中的节点和更新Xml文件中的节点的值
- Spring事务管理的demo
- error: unpacking of archive failed on file错误的解决
- 全方位打造最强终端(iterm2 + oh my zsh)
- linux修改文件打开最大数(ulimit命令)
- 天律的云端大数据分析挖掘之旅
- 远程推送,集成极光的SDK,证书制造