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)这几个术语.但它们真正的意思是什么呢? 在谈论软件开发时,经常 ...
最新文章
- AprilTags二维码的检测与应用
- Linux命令之 mount -- 文件系统挂载
- 前端学习(2602):什么是跨域请求和跨域请求数据数据的表现
- pyTorch实现C3D模型的视频行为识别实践
- Elasticsearch整理笔记(二)
- python语法_str_eval
- 人脸匹配对齐算法pytorch_PyTorch 实现孪生网络识别面部相似度
- 怎样png转jpg还可以保持原有大小?
- iphone5s越狱之后必装
- 几何光学学习笔记(28)-6.3光照度和光出射度
- 云桌面有哪些优势-为什么企业使用云桌面是趋势
- 从程序员的角度来看为什么我们需要工作流
- 心得|Python新手如何渡过小白期,不再当菜鸟程序员?
- 虚拟机windows10 屏幕大小不能自适应
- CNCF 云原生容器生态系统概要
- 手机html特效菊花的彩铅画,彩铅教程 | 菊花的画法步骤
- 使用:js 中 url 传参
- Linux aarch64交叉编译之 weston窗口管理程序
- 批量 汉字 转 拼音方法
- 没有找到libgcc_s_sjlj-1.dll