.NET 9 中 LINQ 新增的功能
LINQ介绍
语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。
安装.NET 9
需要体验LINQ的新增功能前提是需要安装.NET9环境,.NET 9是.NET 8的继任者,特别侧重于云原生应用和性能。作为标准期限支持 (STS) 版本,它将在 18 个月内受到支持。

验证是否安装成功
dotnet --list-sdks

.NET 9 SDK目前在Visual Studio 2022中不适用
注意:.NET 9 SDK目前在Visual Studio 2022中不适用,所以无法在Visual Studio2022中选择.NET 9 为目标框架。

VS Code中编写ASP.NET Core Web应用
VS Code中创建.NET 9控制台应用
从VS Code中打开终端
运行以下命令:
dotnet new console --framework net9.0 --use-program-main

运行应用
dotnet run

CountBy方法
CountBy这个方法允许开发者按键来聚合集合中的元素,并计算每个键的出现次数。这使得计算某个数据集中特定元素的频率变得非常简单。
public static void CountByExample()
{
//这里wordCounts是一个字典,包含每个单词及其出现次数的键值对
var sourceText = "This is a test text. This is only a test. This is the best. This,This,This";
KeyValuePair<string, int> mostFrequentWord = sourceText
.Split(new char[] { ' ', '.', ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(word => word.ToLowerInvariant())
.CountBy(word => word)
.MaxBy(pair => pair.Value);
Console.WriteLine($"最常见的词是:'{mostFrequentWord.Key}' {mostFrequentWord.Value}");
}
输出结果:

AggregateBy方法
AggregateBy这个方法提供了更强大的聚合功能。开发者可以定义一个聚合逻辑(如求和、平均值等),并按键进行聚合。该方法在需要基于键对集合中的元素进行复杂计算时非常有用。
public static void AggregateByExample()
{
(string id, int score)[] data =
[
("0", 88),
("1", 5),
("2", 4),
("1", 10),
("6", 5),
("4", 10),
("6", 25)
];
// aggregatedData 是一个序列,包含按姓名分组并计算总分的元素
var aggregatedData =
data.AggregateBy(
keySelector: entry => entry.id,
seed: 0,
(totalScore, curr) => totalScore + curr.score
);
foreach (var item in aggregatedData)
{
Console.WriteLine(item);
}
}
输出结果:

Index<TSource>(IEnumerable<TSource>) 方法
借助 Index<TSource>(IEnumerable<TSource>),可以快速提取可枚举项的隐式索引。现在,可以编写代码(如以下代码片段)来自动为集合中的项编制索引。
public static void IndexExample()
{
var lines = new List<string> { "First line", "Second line", "Third line" };
foreach (var (index, line) in lines.Index())
{
Console.WriteLine($"Line {index + 1}: {line}");
}
}
输出结果:

参考文章
C#/.NET/.NET Core拾遗补漏

.NET 9 中 LINQ 新增的功能的更多相关文章
- ADO.NET 中的新增功能
ADO.NET 中的新增功能: .NET Framework (current version) 以下是 .NET Framework 4.5 中 ADO.NET 的新增功能. SqlClient D ...
- WPF4.5 中的新增功能和增强功能的信息
本主题包含有关 Windows Presentation Foundation (WPF) 版本 4.5 中的新增功能和增强功能的信息. 本主题包含以下各节: 功能区控件 改善性能,当显示大时设置分组 ...
- .NET Framework 4.5、4.5.1 和 4.5.2 中的新增功能
.NET Framework 4.5.4.5.1 和 4.5.2 中的新增功能 https://msdn.microsoft.com/zh-cn/library/ms171868.aspx
- Windows 10 开发人员预览版中的新增功能(转自 IT之家)
Windows 10 开发人员预览版中的新增功能 在Win10预览版中安装工具与SDK后,即可着手创建Windows通用应用或先浏览目前的环境与此前相比都发生了什么变化. 应用建模 文件资源管理器: ...
- C# 中的新增功能
百度搜索:C# 中的新增功能 微软有站点专门介绍:C# 中的新增功能. 地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/inde ...
- .netFramework中新增的功能—.net最新信息—.net的发展
关键字:.NET Framework 中的新增功能 链接地址:https://docs.microsoft.com/zh-cn/dotnet/framework/whats-new/index 链接地 ...
- .NET平台系列14 .NET5中的新增功能
系列目录 [已更新最新开发文章,点击查看详细] .NET5中不包含的内容 尽管 .NET5 框架中提供了一组重要 API,但它并不包括过去20年左右开发的所有 API,但是.NET Stand ...
- NET Framework 4 中的新 C# 功能
http://msdn.microsoft.com/zh-cn/magazine/ff796223.aspx C# 编程语言自 2002 年初次发布以来已经有了极大的改善,可以帮助程序员编写更清晰易懂 ...
- C#中关于增强类功能的几种方式
C#中关于增强类功能的几种方式 本文主要讲解如何利用C#语言自身的特性来对一个类的功能进行丰富与增强,便于拓展现有项目的一些功能. 拓展方法 扩展方法被定义为静态方法,通过实例方法语法进行调用.方法的 ...
- C# 中一些类关系的判定方法 C#中关于增强类功能的几种方式 Asp.Net Core 轻松学-多线程之取消令牌
1. IsAssignableFrom实例方法 判断一个类或者接口是否继承自另一个指定的类或者接口. public interface IAnimal { } public interface ID ...
随机推荐
- django.db.utils.InternalError: (1050, "Table 'app01_book_author' already exists")
Django项目在执行 python manage.py migrate进行表迁移时报错 错误截图: 解决方法执行: 问题解决!!!
- C#开发一个可被带参数调用并返回数据的控制台应用程序
1 标准输出流控制台程序: namespace ReturnConsoleWrite { class Program { static void Main(string[] args) { //程序功 ...
- 【原创软件】第2期:CAD文字快速批量替换工具CFR(CAD_FastReplace_V4)
01 背景 由于工作需要,开发了一套CAD文字快速批量替换软件CFR.主要目的是:实现dwg文件一次性完成单对/多对词组快速批量替换. 02 主要功能特色 (1)无需打开CAD,快速实现文字批量替换. ...
- 适用于PyTorch 2.0.0的Ubuntu 22.04上CUDA v11.8和cuDNN 8.7安装指南
将下面内容保存为install.bash,直接用shell执行一把梭解决 #!/bin/bash ### steps #### # verify the system has a cuda-capab ...
- Vscode 一次选中多行 光标一次定位多行
1 . 鼠标点击开始位置(定位到行首时,鼠标就点击第一行的行首:定位到行尾时,鼠标就点击第一行的行尾:) 2. 按住shift+alt 点击结束的位置(定位到行首时,鼠标就点击最后一行的行首:定位到 ...
- [oeasy]python0011 - python虚拟机的本质_cpu架构_二进制字节码_汇编语言
程序本质 回忆上次内容 我们把python源文件 词法分析 得到 词流(token stream) 语法分析 得到 抽象语法树(Abstract Syntax Tree) 编译 得到 字节码 (b ...
- Pandas库学习笔记(3)---Pandas Series
Pandas Series Pandas Series基本操作 pandas.Series Series结构如下: pandas.Series(data, index, dtype, copy) 构造 ...
- 格式输出函数printf()详解_C语言
printf函数称为格式输出函数,其关键字最末一个字母f即为"格式"(format)之意.其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上. printf函数调用的一般形式 ...
- 题解:CF1971D Binary Cut
题解:CF1971D Binary Cut 题意 给予你一个 \(01\) 字符串,你可以将它分割,分割后必须排成先 \(0\) 后 \(1\) 的格式. 求最少分割为几部分. 思路 将 \(0\) ...
- exceptionx:灵活便捷的Python异常处理库,让异常处理更高效!
exceptionx English | 中文 exceptionx 是一个灵活且便捷的Python异常处理库,允许你动态创建异常类,并提供多种异常处理机制. exceptionx 的前身是 gqyl ...