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. SpringSecurity简单使用

    什么是SpringSecurity? Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置 ...

  2. springmvc拦截器实现登录验证

    首先创建一个实体类: Customer: 1 package com.petcare.pojo.base; 2 3 import java.sql.Date; 4 import java.sql.Ti ...

  3. 手撕 part1

    1.宏定义三个数最大值 挺有意思 max((a), (b), (c)) (a) > (b)? ((a) > (c)? (a) : (c)) ((b) > (c)? (b) : (c) ...

  4. liunx命令二

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

  5. 操作系统 part4

    1.操作系统的启动 CPU加电后,执行BIOS(基本IO处理系统).BIOS会进行硬件的自检和初始化,然后把加载程序(BootLoader)从磁盘上的引导扇区中加载到指定位置0x7c00.然后控制权交 ...

  6. Asp.Net Core Grpc 入门实践

    Grpc简介 gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. 在 gRPC 中,客户端应用程序可以直接调用不同计算机上的服务器应用程序上的方法,就像它是本地对象一样,从而更轻松地创 ...

  7. 007.NET5 Log4Net组件使用

    NET 5 Log4Net组件使用 1. Nuget引入程序集:log4net + Microsfot.Extensions.Logging.Log4Net.AspNetCore 2. 准备配置文件 ...

  8. how to remove git commit history

    how to remove git commit history 如何删除 GitHub 仓库的历史数据 git filter-branch remove GitHub git commit hist ...

  9. nginx proxy

    listen 80; server_name localhost; # 访问"localhost"的全部请求会被转发到"localhost:81" # loca ...

  10. vue mixin执行覆盖

    https://cn.vuejs.org/v2/guide/mixins.html 完整代码 vue-option-overwrite-strategies vue 自带的mixin如果钩子函数重复会 ...