写点什么

.NET 9 中 LINQ 新增功能实操

作者:追逐时光者
  • 2025-10-20
    广东
  • 本文字数:1698 字

    阅读完需:约 6 分钟

LINQ 介绍

语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。 此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。 借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。

.NET 9 环境准备

需要体验 .NET 9 中 LINQ 的新增功能前提是需要安装 .NET 9 环境,安装 .NET 9 SDK 并且 Visual Studio 2022 需要更新至 17.12 版本。

  • 下载.NET 9.0:https://dotnet.microsoft.com/zh-cn/download/dotnet/9.0

CountBy 方法

CountBy 这个方法允许开发者按键来聚合集合中的元素,并计算每个键的出现次数。这使得计算某个数据集中特定元素的频率变得非常简单。

        public static void CountByExample()        {            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([' ', '.', ','], 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}");            }        }
复制代码

输出结果:

参考文章

  • https://learn.microsoft.com/zh-cn/dotnet/core/whats-new/dotnet-9/overview#linq

发布于: 刚刚阅读数: 4
用户头像

不积跬步无以至千里,不积小流无以成江海! 2020-01-14 加入

微软MVP、华为云HCDE、华为云云享专家、51CTO专家博主、阿里云专家博主、博客园推荐博客、CSDN博客专家、腾讯云创作之星、掘金优秀创作者,一个热爱开源的全栈软件工程师,擅长C#、.NET、Vue等相关技术开发。

评论

发布
暂无评论
.NET 9 中 LINQ 新增功能实操_C#_追逐时光者_InfoQ写作社区