.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拾遗补漏

相关推荐
追逐时光者14 小时前
推荐几款开源且免费的 .NET MAUI 组件库
【.net】·【c#】·【开源项目】·【.net core】·【maui】
追逐时光者3 天前
精选4款基于.NET开源、功能强大的通讯调试工具
【.net】·【c#】·【开源项目】·【.net core】
追逐时光者5 天前
C#/.NET/.NET Core技术前沿周刊 | 第 26 期(2025年2.10-2.16)
【.net】·【c#】·【开源项目】·【.net core】·【技术前沿周刊】
追逐时光者7 天前
V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库
【.net】·【c#】·【开源项目】·【maui】
追逐时光者8 天前
8款支持 C# 语言的 AI 辅助编程神器,高效编程利器!
【.net】·【c#】·【ai编程】·【aigc&ai赋能】
追逐时光者9 天前
C#字符串拼接的6种方式及其性能分析对比
【.net】·【c#】·【.net core】·【面试指南】·【拾遗补漏】
追逐时光者10 天前
C#/.NET/.NET Core技术前沿周刊 | 第 24 期(2025年1.27-1.31)
【.net】·【c#】·【开源项目】·【.net core】·【技术前沿周刊】
追逐时光者10 天前
C#/.NET/.NET Core技术前沿周刊 | 第 25 期(2025年2.1-2.9)
【.net】·【c#】·【.net core】·【技术前沿周刊】
追逐时光者12 天前
C#/.NET/.NET Core优秀项目和框架2025年1月简报
【.net】·【c#】·【开源项目】·【.net core】·【每月简报】
追逐时光者14 天前
2025年值得推荐的 8 款 WPF UI 控件库
【.net】·【c#】·【开源项目】·【.net core】·【wpf】