public class Player
{
public string Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public bool IsPlaying { get; set; }
} List<Player> playerList = new List<Player>()
{
new Player() {Id = "1", Name = "姚明", Age = 41, IsPlaying = false},
new Player() {Id = "2", Name = "刘玉栋", Age = 50, IsPlaying = false},
new Player() {Id = "3", Name = "王治郅", Age = 44, IsPlaying = false},
new Player() {Id = "4", Name = "易建联", Age = 34, IsPlaying = true},
new Player() {Id = "5", Name = "万圣伟", Age = 27, IsPlaying = true},
};

1. linq 实现排序

如果想按照未退役在前,退役在后、年龄大在前,年龄小在后的顺序展示这 5 位运动员,可用下面两种的任一种实现:

playerList = playerList.OrderByDescending(p => p.IsPlaying).ThenByDescending(p => p.Age).ToList();

playerList = (from p in playerList orderby p.IsPlaying descending, p.Age descending select p).ToList();

2. First 和 FirstOrDefault

IEnumerable<Player> bidIdPlayers = playerList.Where(p => p.Age > 60);

Player playerA = bidIdPlayers.First(); // bidIdPlayers 为空的话报错,提示序列不包含任何元素
Player playerB = bidIdPlayers.FirstOrDefault(); // bidIdPlayers 为空的话不报错,playerB 值为 null string idA = bidIdPlayers.FirstOrDefault().Id; // bidIdPlayers 为空的话报错,提示未将对象引用设置到对象的实例
string idB = bidIdPlayers.FirstOrDefault()?.Id; // bidIdPlayers 为空不报错,idB 值为 null
var age = bidIdPlayers.FirstOrDefault()?.Age; // bidIdPlayers 为空不报错, age 值为 null

C# 基础 - linq 举例应用的更多相关文章

  1. MariaDB MariaDB、MySQL存储过程、游标基础应用举例说明

    MariaDB.MySQL存储过程.游标基础应用举例说明 by:授客 QQ:1033553122 测试环境: MariaDB-10.0.19-centos7-x86_64 实践操作: # 创建测试数据 ...

  2. (C#基础)Linq学习理解

    一遍学习基础,一遍练习打字,很多乐趣. 代码 using System; using System.Collections.Generic; using System.Linq; using Syst ...

  3. C#基础----Linq之List<T>篇

    最近有用到List处理排序以及分页的问题.想想还是写一个博客记录一下.以下围绕Person类实现,Person类只有Name和Age两个属性   一.List<T>排序 1.1 List& ...

  4. java基础-泛型举例详解

    泛型 泛型是JDK5.0增加的新特性,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数.这种类型参数可以在类.接口.和方法的创建中,分别被称为泛型类.泛型接口.泛型方法. 一.认识泛型 在没 ...

  5. python学习笔记(基础三:if else流程判断、while循环、for循环)

    if else流程判断 getpass在pycharm中无法使用,在命令行窗口中进入python环境可以使用. import getpassusername = input("usernam ...

  6. C#中的LINQ

    从自己的印象笔记里面整理出来,排版欠佳.见谅!   1.LINQ: 语言集成查询(Language Integrated Query) 实例: var q=      from c in catego ...

  7. LINQ驱动数据的查询功能

    一.LINQ概念 LINQ是微软在.NetFramework3.5中新加入的语言功能,在语言中以程序代码方式处理集合的能力. 1.1 LINQ VS 循环处理 在我刚工作时候,对于集合对象的处理一般是 ...

  8. spring的配置模式与注解模式基础

    “依赖注入”是spring的核心特征,在Web服务器(如Tomcat)加载时,它会根据Spring的配置文件中配置的bean或者是通过注解模式而扫描并装载的bean实例自动注入到Application ...

  9. C# LiNq的语法以及常用的扩展方法

    首先先来扯一下,这篇博文是我第一次写的,主要是我的一些摘录,希望对大家有所帮助. Linq的基础 •LINQ(读音link):Linq To SQL(过时).Linq To Object.Linq T ...

随机推荐

  1. Linux-输出/输入重定向

    目录 重定向的分类 输出重定向 将标准输出重定向到文件 将标准输出追加重定向到文件 将错误输出重定向到文件 将标准输出和错误输出都重定向到文件 将错误输出重定向到黑洞文件 输入重定向 重定向的分类 名 ...

  2. 【非原创】LightOJ - 1284 Lights inside 3D Grid【概率期望】

    学习博客: 戳这里 戳这里 戳这里 戳这里 题意: 在一个三维的空间,每个点都有一盏灯,开始全是关的, 现在每次随机选两个点,把两个点之间的全部点,开关都按一遍:问k次过后开着的灯的期望数量: 题解: ...

  3. vs2019 写入访问权限冲突

    先说句题外话 vs反应有时候有点慢,改过的地方等几秒才会显示正确 另外有时候正确的地方会报错,重启吧 回到正题 "引发了异常: 写入访问权限冲突._Left 是 0xCDCDCDCD.如有适 ...

  4. liunx命令二

    声明:以下资料全部摘自实验楼 常用快捷键 按键 作用 Table 补全命令 Ctrl+c 强制结束 Ctrl+d 键盘输入结束或退出终端 Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行 Ctrl ...

  5. 用python写的一个自动卸载python包的脚本

    import osplist=os.popen("pip list") # 执行windows cmd命令,获取所有包package列表,并获取返回结果到plist#跳过第1,2行 ...

  6. CSS Grid & Flex poster PDF 海报定制

    CSS Grid & Flex poster PDF 海报定制 CSS 手工实现 导出 SVG / PNG 导出 PDF 打印,定制海报 refs https://css-tricks.com ...

  7. Redis in Action : Redis 实战学习笔记

    1 1 1 Redis in Action : Redis  实战学习笔记 1 http://redis.io/ https://github.com/antirez/redis https://ww ...

  8. copy-webpack-plugin & ignore folder

    copy-webpack-plugin & ignore folder https://github.com/webpack-contrib/copy-webpack-plugin#ignor ...

  9. taro render html

    taro render html html = `<h1 style='color: red'>Wallace is way taller than other reporters.< ...

  10. push notifications

    push notifications https://developers.google.com/web/fundamentals/push-notifications/ Push API https ...