📅  最后修改于: 2023-12-03 15:26:34.543000             🧑  作者: Mango
C# LINQ(Language-Integrated Query)是一组.net框架内置的操作序列的功能,它能够帮助程序员更加方便地处理数据源中的数据。List是C#中的一种基本数据结构,它是一种有序、可重复的集合。在这个主题中,我们将介绍如何使用LINQ从List中查询数据。
从List中选取一部分数据是常见的操作之一,这可以通过使用Where()
方法实现。Where()
方法接收一个谓词函数作为参数,根据该函数的返回结果来决定是否选取当前遍历到的元素。
public static void FilterList()
{
List<int> numbers = new List<int>() { 1, 2, 3, 4, 5 };
var filteredNumbers = numbers.Where(n => n % 2 == 0);
foreach (var number in filteredNumbers)
{
Console.WriteLine(number);
}
}
上述代码中,我们定义了一个List类型的变量numbers,其中包含了一些整数。接着,我们调用了Where()
方法并传入一个谓词函数n => n % 2 == 0
,这个函数用于判断当前遍历到的元素是否是偶数。最终,我们使用foreach循环打印出结果。
除了选取一部分数据外,经常需要对List中的元素进行转换,这可以使用Select()
方法实现。Select()
方法接收一个转换函数作为参数,它将把每个元素作为参数传入该函数,并返回转换后的结果作为新List的元素。
public static void TransformList()
{
List<string> names = new List<string>() { "Tom", "Jerry", "Spike" };
var upperCaseNames = names.Select(n => n.ToUpper());
foreach (var name in upperCaseNames)
{
Console.WriteLine(name);
}
}
在上述代码中,我们定义了一个List类型的变量names,其中包含了一些字符串。接着,我们调用了Select()
方法,并传入了一个转换函数n => n.ToUpper()
,这个函数将当前遍历到的字符串转换成大写形式。最终,我们使用foreach循环打印出结果。
有时候,需要对List中的元素进行合并或连接,这可以通过使用Aggregate()
方法实现。Aggregate()
方法接收一个聚合函数作为参数,它将遍历List中的每个元素,并使用函数将它们合并/连接成一个结果。
public static void JoinList()
{
List<string> names = new List<string>() { "Tom", "Jerry", "Spike" };
var joinedNames = names.Aggregate((a, b) => a + " & " + b);
Console.WriteLine(joinedNames);
}
上述代码中,我们定义了一个List类型的变量names,其中包含了一些字符串。接着,我们调用了Aggregate()
方法,并传入了一个聚合函数“(a, b) => a + " & " + b”
,该函数将当前遍历到的字符串合并成一个以“ & ”符号连接的字符串。最终,我们打印出结果。
通过使用C#的LINQ,我们可以更加方便地对List中的元素进行操作。例如,我们可以根据需要选取一部分数据、对元素进行转换、对元素进行合并/连接等等。这些操作能够提升我们的编程效率,并让我们更加专注于实现业务逻辑。