技术交流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. 计算机如何表示色彩?
  2. bash: ifconfig: command not found
  3. 文巾解题 557. 反转字符串中的单词 III
  4. gmail头像_Gmail与Google+进一步整合:可显示好友头像
  5. 小学 n 阶乘的后面包含多少零c语言,C语言---求n的阶乘后面有多少个连续的0
  6. OGNL表达式struts2标签“%,#,$”
  7. 数据库:MySQL相关知识整理,值得收藏!
  8. 10打开没有反应_【专利】表面施胶剂的反应装置
  9. 有没有用逆向算法恢复马赛克的可能性?
  10. maven环境、本地仓储配置(下载安装)idea配置maven
  11. sql server 2008完全卸载工具
  12. access简述报表的功能_报表的主要功能_access标签报表有什么作用
  13. 几个常用的C语言编程工具,极力推荐!
  14. 软路由cpu性能跑分
  15. google hacking 搜索技巧
  16. [Hi3751V350][Android9.0] 调试笔记 --- 添加并设置默认系统字库
  17. 冒泡排序算法(bubbling sort)
  18. Apache OpenNLP介绍(一)
  19. 如何用PS把图片中的人物剪掉
  20. 【unity】分享一个2D小游戏的完整制作教程——涂鸦跳跃demo

热门文章

  1. 单片机ADC采样算法----限幅滤波法
  2. HDU-2063-过山车(二分匹配)
  3. 吴恩达深度学习3.1笔记_Structuring Machine Learning Projects_机器学习策略(1)
  4. 创建XML文件以及XML中的节点和更新Xml文件中的节点的值
  5. Spring事务管理的demo
  6. error: unpacking of archive failed on file错误的解决
  7. 全方位打造最强终端(iterm2 + oh my zsh)
  8. linux修改文件打开最大数(ulimit命令)
  9. 天律的云端大数据分析挖掘之旅
  10. 远程推送,集成极光的SDK,证书制造