首页 > 编程语言 >C#对List的元素按属性排序

C#对List的元素按属性排序

时间:2023-06-15 21:35:19浏览次数:66  
标签:return C# List User myList 排序 public

C# 对 List 元素排序有几种方法。

方法一、使用Linq

List<User> sortedList = list.OrderBy(o=>o.ID).ToList();

如果按降序排序,可以使用OrderByDescending方法:

List<User> sortedList = list.OrderByDescending(o=>o.ID).ToList();

方法二、扩展IComparable接口

示例:

public class User : IComparable<User>
{
    public string ID;
    public string Name;
    public int CompareTo(User other) 
    {
        if (null == other)
            return 1;
        return string.Compare(this.Id, other.Id);
    }
}

定义好类后,使用List排序如下:

List<User> myList = ...
myList.Sort();

如果是除了按Id排序,还有按其他属性排序的需求,可以实现IComparer接口:

public sealed class UserByNameComparer : IComparer<User> 
{
    public int Compare(User x, User y) 
    {
        if (object.ReferenceEquals(x, y))
            return 0;
        else if (null == x)
            return -1;
        else if (null == y)
            return 1;
        else
            return string.Compare(x.Name, y.Name);
    }
}

使用:

List<User> myList = ...
myList.Sort(new UserByNameComparer());

// 直接

public class BoardPosInfoSort : IComparer<BoardPosInfo> // PickerIDPick 升序
{
    public int Compare(BoardPosInfo x, BoardPosInfo y)
    {
        return x.PickerIDPick.CompareTo(y.PickerIDPick);
    }
}




转载:https://devnote.pro/books/10000001801239/c/10000041331239

标签:return,C#,List,User,myList,排序,public
From: https://www.cnblogs.com/huvjie/p/17484155.html

相关文章

  • javaScript语言学习指南
    简介关于JavaScript的入门学习教程,网上通常会推荐以下书籍:《JavaScript权威指南》(其中涵盖语言核心部分和浏览器客户端编程,比较系统和全面,个人比较推荐,电子版下载(中文版),英文版)《JavaScript高级程序设计》(作为参考书与《JavaScript权威指南》一起参考阅读还不错,电子版下载)《......
  • CentOS7 防火墙操作
    一、开启特定端口命令二、常用命令 一、开启特定端口命令1.检查防火墙是否开启(需要开启防火墙)#查看防火墙状态命令:systemctlstatusfirewalld#启动防火墙命令:systemctlstartfirewalld#关闭防火墙命令:systemctlstopfirewalld  2.开放指定端口(开发端口后需......
  • ros melodic安装,rosdep init失败解决方法
    1.背景:前段时间手贱把之前安装好的ros环境给删了,这两天刚好需要用,遇到了点之前踩过的坑,主要是众所周知的rosdepinit失败,这里记录一下。2.系统:Ubuntu18.043.网络环境:有魔法3.需求:安装rosmelodic版本4.安装步骤:a.基本流程都可以按照官方的进行,贴上链接:http://wiki.ro......
  • nginx安装-CentOS7
    一、下载nginx版本二、配置2.1安装配置2.2配置nginx环境变量2.3 设置开机启动2.4CentOS7防火墙端口开放三、卸载nginx四.常用命令  一个项目,使用https协议,用nginx做负载。使用当前较新的windows版本nginx1.23.3.2SnapDragonfly,使用Jmeter压测,很不理想,http协议能......
  • tr069 节点模板定义c语言
    #include<stdio.h>/*Signed*/typedefsignedcharint8_t;typedefshortintint16_t;typedefintint32_t;/*Unsigned.*/typedefunsignedcharuint8_t;typedefunsignedshortintuint16_t;typedefunsignedint......
  • [ABC114D] 756 题解
    题目链接题意给定一个数\(n\),求\(n!\)的因数中,刚好有\(75\)个因数的数的个数。分析首先有这样一个性质,对于一个数\(a\),我们将其分解质因数,即\[a=\prod_{i=1}^{n}p_i^{k_i}\]那么,\(a\)的因数个数就是\[sum=\prod_{i=1}^{n}(k_i+1)\]简单证明一下,对于第......
  • 学习爬虫入门2,count反爬虫思路
    浏览网页的过程1.输入网址2.浏览器向DNS服务商发起请求3.找到对应服务器4.服务器解析请求5.服务器处理最终请求发回去6.浏览器解析返回数据7.展示给用户爬虫策略广度优先  深度优先  聚焦爬虫BFS从根节点开始沿着树的宽度深度优先DFS尽可能深的搜索树的分支......
  • C#将字符串编译成程序集并执行
    实现将字符串编译为代码并在程序中使用,实际应用可将字符串保存在文件中,程序启动后读取文件中字符转换为代码执行,这样只需要修改文件不改动代码就可以增删或修改程序功能,提高程序的灵活性。例如,要实现下面的代码:usingSystem;namespaceTestSpace{classTest{......
  • Scala基本语法
    scala的基本语法注释对于scala的注释,简而言之就是一句话,和java的注释一模一样基本语法(1)单行注释://(2)多行注释:/**/(3)文档注释:/****/代码示例:packagecom.doitedu.demo01objectTestNotes{defmain(args:Array[String]):Unit={//(1)......
  • c++多线程 std::async std::future
    c++标准库中对线程操作有完善的封装,其中最常用到的如std::thread,std::async。EffectiveModernCpp中指出,应尽量使用std::async即基于任务的编程而非基于线程的编程。std::thread在前面的文章有提到过,此处仅对std::async作以记录。正如前面所说,std::async是基于任务的策略,本人理......