技术交流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对象查询,排序,分组,去重在工作中的使用_随时更新相关推荐

  1. C#.Net工作笔记003---异步编程async await_在开发中的使用经验_随时更新

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 private async void test(){ TestClient client =new ...

  2. Disruptor本地线程队列_实现线程间通信---线程间通信工作笔记001

    Disruptor本地线程队列_实现线程间通信---线程间通信工作笔记001 看到同事用这个东西了,这个挺好用的说是,可以实现,本地线程间的通信,好像在c++和java中都可以用 现在没时间研究啊,暂 ...

  3. elasticsearch aggregations_elasticsearch 笔记三 之聚合查询之分组计数、平均数、最大值、script、最小值、总和...

    本节 es 笔记目录如下: 分组计数 平均数 avg 最大值 max 最小值 min 总和 sum 此次笔记用到的数据还是前一节中导入的官方提供的bank数据,用到其他数据的,下面会提供导入方式. 首 ...

  4. elasticsearch 笔记三 之聚合查询之分组计数、平均数、missing值使用、最大值、使用script计算、最小值、总和

    本节 es 笔记目录如下: 分组计数 平均数 avg 最大值 max 最小值 min 总和 sum 此次笔记用到的数据还是前一节中导入的官方提供的 bank 数据,用到其他数据的,下面会提供导入方式. ...

  5. java工作笔记017---java8新特性_使用lamda表达式进行List分组_排序_去重_随时更新

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这个电视购物项目后台采用java1.8编写,有些业务复杂的地方,使用lamda表达式可以简化开发 ...

  6. java 集合中对象的排序 和去重

    对list 集合对象中 重复度数据进行排序 1.实体类 中 实现 Comparable 接口中的compareTo 方法 用 什么来比较 集合中的排序 2.对集合中的的对象进行去重,重写 hashCo ...

  7. MySQL核心查询-排序 分组 聚合 多表查询 合并查询 子查询

    目录 一.单表查询 排序 聚合函数 分组 limit关键字 二.SQL约束 主键的自增 DELETE和TRUNCATE对自增长的影响 三.多表查询 外键约束 删除外键约束 多表查询的分类 内连接查询 ...

  8. Qt工作笔记-Qt元对象系统解析【2合1】

    博文转载地址: https://blog.csdn.net/spwper/article/details/51332187 说Qt信号与槽是一个很好机制,不如说Qt的元对象系统很强大.这也是大家讲Qt ...

  9. 认识什么是运维中的CI/CD---持续集成交付工作笔记001

    在软件开发中经常会提到持续集成Continuous Integration(CI)和持续交付Continuous Delivery(CD)这几个术语.但它们真正的意思是什么呢? 在谈论软件开发时,经常 ...

最新文章

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

热门文章

  1. LettCode50. Pow(x, n)
  2. Pytorch 其它有关Tensor的话题,GPU,向量化
  3. 配合Opencv2.4.9,CMake3.12.1和VS2010在win10下构建项目踩坑记录
  4. Python基础----集合
  5. [瞎搞]JZOJ 3096 Hash函数
  6. 设计模式之蝉——代理模式上中
  7. 放球问题 组合数学 转自百度百科
  8. 多进程,守护进程,锁
  9. 使用Weka进行数据挖掘
  10. 在PLSQL中编译复杂的java(转)