C# LINQ Select
上次修改时间:2024 年 1 月 19 日
在本文中,我们将展示如何使用 LINQ 的 Select 方法和 select 子句将元素映射到表达式。
语言集成查询 (LINQ) 是一种特定领域的语言,用于查询来自各种数据源的数据,包括数组、列表、XML 文件或数据库。
select
子句或 Select
方法将序列的每个元素投影为新形式。它选择、投影和转换集合中的元素。在其他语言中,Select 通常被称为 Map。
Enumerable.Select
方法接受一个选择器函数作为参数。选择器是一个转换函数,它应用于每个源元素。
C# LINQ Select 简单示例
第一个示例是一个简单的程序,它使用 LINQ Select。
Program.cs
List<int> vals = [1, 2, 3, 4, 5, 6]; var res = vals.Select(e => e * 2); Console.WriteLine(string.Join(',', res));
该程序定义了一个整数列表。所有元素都乘以 2。
var res = vals.Select(e => e * 2);
Select
方法将给定的 lambda 表达式应用于每个元素。它返回一个由选择器函数修改的值序列。
$ dotnet run 2,4,6,8,10,12
C# LINQ Func 选择器
Func
是一个内置的泛型委托类型。它可以与方法、匿名方法或 lambda 表达式一起使用。
Program.cs
List<int> vals = [1, 2, 3, 4, 5, 6]; Func<int, int> byfive = e => e * 5; var res = vals.Select(byfive); Console.WriteLine(string.Join(',', res));
该程序将 Func
委托应用于列表的元素。
$ dotnet run 5,10,15,20,25,30
C# LINQ select 子句
查询表达式是一种替代的 LINQ 语法。在查询表达式中,我们使用 select
子句。
Program.cs
List<string> words = ["sky", "cup", "loud", "war", "water"]; var res = from word in words select word.Length; Console.WriteLine(string.Join(',', res));
在该程序中,我们将单词列表转换为单词长度的序列。
$ dotnet run 3,3,4,3,5
C# LINQ 带索引的选择器
我们可以将元素的索引传递给选择器函数。
Program.cs
List<string> words = ["sky", "cup", "loud", "war", "water"]; var res = words.Select((e, idx) => new { idx, len = e.Length }); foreach (var e in res) { Console.WriteLine($"{e}"); }
在该程序中,结果对象还包括元素的索引。
$ dotnet run { idx = 0, len = 3 } { idx = 1, len = 3 } { idx = 2, len = 4 } { idx = 3, len = 3 } { idx = 4, len = 5 }
C# LINQ select 投影
select
子句也执行投影。 投影是从返回的对象中选择特定的字段。
Program.cs
List<User> users = [ new ("John", "Doe", 1230), new ("Lucy", "Novak", 670), new ("Ben", "Walter", 2050), new ("Robin", "Brown", 2300), new ("Amy", "Doe", 1250), new ("Joe", "Draker", 1190), new ("Janet", "Doe", 980), new ("Albert", "Novak", 1930), ]; var res = from user in users orderby user.Salary select user.Salary; Console.WriteLine(string.Join('\n', res)); record User(string FirstName, string LastName, int Salary);
我们有一个用户列表,包含三个字段:名字、姓氏和薪水。 我们按薪水对用户进行排序,并在结果序列中仅选择薪水字段。
$ dotnet run 670 980 1190 1230 1250 1930 2050 2300
来源
在本文中,我们介绍了 LINQ Select 操作。
作者
列出所有 C# 教程。