c# linq lambda 去重,排序,取最高纪录。

----------------------------------------------------.对基础类型排序

方法一:

调用sort方法,如果需要降序,进行反转:

List<int> list = new List<int>();
    list.Sort();// 升序排序
    list.Reverse();// 反转顺序

方法二:

使用lambda表达式,在前面加个负号就是降序了

List<int> list= new List<int>(){5,1,22,11,4};
    list.Sort((x, y) => x.CompareTo(y));//升序
    list.Sort((x, y) => -x.CompareTo(y));//降序
 
-------------------------------------------------------------对非基础类型排序

方法一:

修改类本身,实现IComparable<T>接口

//重写的CompareTo方法,根据Id排序
    public int CompareTo(People other)
    {
        if (null == other)
        {
            return 1;//空值比较大,返回1
        }
        //return this.Id.CompareTo(other.Id);//升序
        return other.Id.CompareTo(this.Id);//降序
    }

方法二:

委托

list.Sort(delegate(People p1,People p2)
    {
        return p1.Id.CompareTo(p2.Id);//升序
    });

lambda

list.Sort((x,y)=> { return x.Id.CompareTo(y.Id); });

-------------------------------------------------------------OrderBy

list = list.OrderBy(o => o.Id).ToList();//升序
    list = list.OrderByDescending(o => o.Id).ToList();//降序
     
    list = list.OrderBy(o => o.Id).ThenBy(o=>o.Name).ToList();
    list = list.OrderByDescending(o => o.Id).ThenByDescending(o=>o.Name).ToList();//降序

---------------------------------------------------------------------------linq 去重

var list_distinct = list.GroupBy(a => new { a.name1, a.name2, a.name3 }).Select(a => a.Key).ToList();

------------------------------------------------------linq  查询金额最高前几条
                    //
List<ListSortModel> sortedList = (from a in list orderby a.Amount descending select a).Take(data.AmountCount).ToList();

-----------------------------linq取DataTable某一列数据返回给一个List<int>
var list =dt.AsEnumerable().Select<DataRow, int>(x => Convert.ToInt32(x["列名"])).ToList<int>();

原文地址:https://www.cnblogs.com/j2ee-web-01/p/10346173.html

时间: 2025-01-13 06:52:02

c# linq lambda 去重,排序,取最高纪录。的相关文章

ASP.NET EF(LINQ/Lambda查询)

EF(EntityFrameWork) ORM(对象关系映射框架/数据持久化框架),根据实体对象操作数据表中数据的一种面向对象的操作框架,底层也是调用ADO.NET ASP.NET MVC 项目会自动导入MVC程序集,因为默认.NET环境(GAC)中没有这个程序集 1 create database MyFirstEF 2 on primary 3 ( 4 name='MyFirstEF.mdf', 5 --修改为自己电脑上SQL DB路径 6 filename='E:\ProgramMSSQL

linq 对象属性排序

WSWSVoucher [] wswsv = new WSWSVoucher[4]; wswsv= wswsv.OrderBy(s => s.creditAmount).ToArray<WSWSVoucher>(); wswsv= wswsv.OrderByDescending(s => s.creditAmount).ToArray<WSWSVoucher>(); linq 对象属性排序,布布扣,bubuko.com

数组去重排序

总时间限制:  1000ms  内存限制:  1000kB 描述 小吉是银行的会计师,在处理银行帐目的时候,遇到了一些问题.有一系列整数,其中含有重复的整数,需要去掉重复后,排序输出,你能帮助小吉解决问题吗? 输入 输入数据共2行,第一行输入测试数据个数n,第二行输入这n个整数,整数之间可能有重复,整数之间可能有若干个空格.n <= 105,所有的整数不超过104. 输出 输出为1行,是这n个数去重后从小到大的排序. 样例输入 3 4 4 2 样例输出 2 4 + ? #include <io

分组排序取次数

原文:分组排序取次数 函数 row_number() row_number() over (partition by patient_id /*需要分组的列*/ order by zyid /*排序的列*/) sqlSELECT ZYID, patient_id ,row_number() over (partition by patient_id order by zyid) visit_id from jk_patient_in_hospital oracle create or repla

用于Linq的去重 Distinct

/// <summary> /// 用于Linq的去重,扩展方法需要放到静态类中 /// </summary> /// <typeparam name="TSource"></typeparam> /// <typeparam name="TKey"></typeparam> /// <param name="source"></param> /// 

去重+排序板子(set+map)

题意: 给定n个数,去重排序后输出个数和每个数 1.map实现 #pragma GCC optimize("O2") #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<stack> #include<set> #i

关于H3 BPM数据库如何实现排序取数据的问题

问题: 在打印模板中获取子表内容,可从数据库中取数据,而当前项目数据库里面数据按年度录入,但是只需要显示近3年的数据,插件如何实现排序取数据? 解决方法: 1.先直接写一个SQL语句,把近3年排序后的数据读取出来 2.在调用子表接口加载数据 3.示例: var monthly = DateTime.Now.Month; var selectsql = string.Format(@"SELECT t1.Yearly, t1.Monthly, t1.BudgetUnitName, t1.Budge

LINQ之路14:LINQ Operators之排序和分组(Ordering and Grouping)

本篇继续LINQ Operators的介绍,这里要讨论的是LINQ中的排序和分组功能.LINQ的排序操作符有:OrderBy, OrderByDescending, ThenBy, 和ThenByDescending,他们返回input sequence的排序版本.分组操作符GroupBy把一个平展的输入sequence进行分组存放到输出sequence中. 排序/Ordering IEnumerable<TSource>→IOrderedEnumerable<TSource> O

LinQ Lambda表达式用作泛型活动

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.IO; namespace LambdaExpressionAction { class Program { static void Main(string[] args) { //Action:泛型委托,可以将行为捕获为一个可调用的对象 //只需要