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}"); } }
输出结果: