前言

.NET6为LINQ添加了多个新API,在本文中,我们将始终使用User类逐一演示这些添加到LINQ中的内容:

public class User
{public string Name { get; set; }public int Age { get; set; }
}

*By方法

包括下列方法:

  • DistinctBy: 根据指定的键选择器从集合返回不同元素的集合

  • ExceptBy: 根据指定的键选择器生成两个集合的集合差集

  • IntersectBy: 根据指定的键选择器函数生成两个集合的集合交集

  • UnionBy: 根据指定的键选择器生成两个集合的集合并集

  • MinBy: 根据指定的键选择器函数返回集合中的最小值

  • MaxBy: 根据指定的键选择器函数返回集合中的最大值

相对于不带By的方法,提供了一个键选择器keySelector,允许对值的子集而不是整个值执行操作。

例如,取Name最长的User:

var user = users.MaxBy(p => p.Name.Length);

Chunk

将集合按照提供的大小分为多个集合。也就是说,返回集合的集合。

例如,将用户按10人分组:

var chunks = users.Chunk(size: 10);
foreach (var chunk in chunks)
{foreach(var user in chunk){Console.WriteLine(user);    }
}

范围和索引支持

范围(..)和索引(^)用于访问集合中的单个元素或范围。

现在可以对ElementAt方法使用索引重载,对Take方法使用范围重载。

示例代码如下:

var lastUser = users.ElementAt(^1);//取最后一个Uservar users1To4 = users.Take(1..5);//取索引1到4的User

*OrDefault defaultValue参数

FirstOrDefault, LastOrDefaultSingleOrDefault方法当未找到集合元素时将返回default(T)。

但在某些场合是不合适的。比如需要始终返回一个User实例,避免空引用,这时可以传递defaultValue参数进行指定:

static readonly User EmptyUser = new User { Name = "" };var user = users.FirstOrDefault(p=>p.Age>30,  EmptyUser);
Console.WriteLine(user.Name);

结论

虽然这些改进都很小,没有从根本上改变使用LINQ的方式,但每一项确实都能帮助解决实际项目中的需要。

如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“

.NET 6新特性试用 | LINQ功能改进相关推荐

  1. php 5.6 新特性,PHP 5.6正式发布:新特性、及功能改进介绍

    经过了长时间的开发测试,新版本PHP程序(PHP5.6正式版)终于发布了.新版本中加入了一些实用的新特性,也摒弃了一些冗余的功能.同时,也对部分原有功能进行了改进.下面就一起看看PHP 5.6正式版到 ...

  2. .NET 6新特性试用 | 总结:我最喜欢的5个特性

    前言 不知不觉,<.NET 6新特性试用>系列文章已经写了20多篇,而今天终于要告一段落了. 如果你还没有看过,详细文章列表在这里: .NET 6新特性试用系列 在这么多特性中,我最喜欢如 ...

  3. java9新特性--jShell--命令语法改进:try语和接口的私有方法--String存储结构变更--集合工厂方法--模块化系统--InputStream 加强--增强的 Stream API

    目录 Java 9 的新特性 JDK 和 JRE 目录结构的改变 模块化系统: Jigsaw -> Modularity 实现目标 模块 结构 jShell命令 产生背景 设计理念 实现目标 j ...

  4. .NET 6新特性试用 | 可空引用类型

    前言 在查看<隐式using指令>功能时,我们在csproj中发现这样一个属性: 那么,Nullable到底是干嘛的? 可为空上下文 严格来说,这不是新特性,而是C# 8.0引入的特性之一 ...

  5. 5.0 新特性试用体验之 Clustered Index

    作者:hzc989 原文来源: https://tidb.net/blog/69dd056c [是否原创]是 [首发渠道]TiDB 社区 [目录] 一.引言 二.基础前情回顾 三.era withou ...

  6. oracle12c spa,Oracle12c功能加强 新特性之管理功能的加强

    1.    数据文件在线重命名和迁移数据库 不想先前的版本,在Oracle12cR1中,数据文件的迁移或重命名再也不要求一系列的步骤,例如:将表空间至于只读模式,而后数据文件逻辑等操做.在12cR1中 ...

  7. Oracle12c功能增强 新特性之管理功能的增强

    1.    数据文件在线重命名和迁移 不想先前的版本号.在Oracle12cR1中,数据文件的迁移或重命名不再要求一系列的步骤,比如:将表空间至于仅仅读模式,然后数据文件逻辑等操作.在12cR1中.数 ...

  8. Json.net/Newtonsoft 3.0 新特性JObject/Linq to Json

    Json.net codeplex :http://www.codeplex.com/Json 原本感觉Newtonsoft.Json和.net自己的JavaScriptSerializer相差无几, ...

  9. .NET 6新特性试用 | SDK工作负载

    前言 为了应对.NET SDK能够支持的程序集项目(例如iOS.Android.WASM)的不断增长,从.NET 6开始,允许用户仅安装必要的SDK(例如ASP.NET Core),而不是一次性安装& ...

最新文章

  1. MultiBaC包消除不同组学数据之间的批次效应
  2. Jackson 通过自定义注解来控制json key的格式
  3. 南阳理工大学 gnns 新基准
  4. python 判断 图片是否相同
  5. 16年寒假随笔(2)
  6. 【bzoj5082】弗拉格 矩阵乘法
  7. LC.exe”已退出,代码为 -1
  8. Abp + Grpc 如何实现用户会话状态传递
  9. SyntaxError: ‘return‘ outside function 在python里面的报错问题
  10. 自己动手做cpu_如何建立一个自己动手做心动追踪装置
  11. 公共基础知识计算机,事业单位考试公共基础知识:计算机基础知识
  12. Kafka 源码解析:Server 端的运行过程
  13. java读取文件乱码
  14. Windows+Ubuntu 搭建私有云桌面服务
  15. 二维彩虹二维码产品功能更新:增加“赞赏”、“重置”功能
  16. matlab 转换为相对湿度
  17. 学习笔记---ih5_九宫格_拼图
  18. 物联网卡和流量卡网速对比,看看谁更强?
  19. 三星新旗舰手机 GALAXY S III正式发布
  20. 蚂蚁代理免费代理ip爬取(端口图片显示+token检查)

热门文章

  1. DVWA系列之24 high级别上传漏洞
  2. Eclipse 导出
  3. nginx+PHP+PHP-FPM(FastCGI)在Ubuntu上的安装和配置
  4. 单点登录(sso)入门
  5. 【CH4302】Interval GCD
  6. 远程连接服务器出现身份验证错误 要求的函数不受支持
  7. Unity中Instantiate一个prefab时需要注意的问题
  8. Group Box组合框的简单使用 [大三TJB_708]
  9. Leetcode: Single Number
  10. javac手动编译servlet