如何使⽤LINQ进⾏数据过滤和排序操作?

360影视 2025-01-30 08:34 2

摘要:使用 LINQ 进行数据过滤和排序操作非常简单且高效。LINQ 提供了 Where 和 OrderBy(以及 OrderByDescending)方法来进行数据的过滤和排序。下面分别介绍如何使用它们:

使用 LINQ 进行数据过滤和排序操作非常简单且高效。LINQ 提供了 Where 和 OrderBy(以及 OrderByDescending)方法来进行数据的过滤和排序。下面分别介绍如何使用它们:

Where 方法用于根据给定的条件筛选集合中的元素。它接受一个 Func 类型的谓词作为参数,返回一个新的符合条件的集合。

List numbers = new List { 1, 2, 3, 4, 5, 6, 7, 8 };// 使用 LINQ 进行数据过滤var result = from n in numberswhere n > 5select n;foreach (var num in result){Console.WriteLine(num); // 输出: 6, 7, 8}2.数据排序:使用OrderBy和OrderByDescending方法

OrderBy 方法用于按照升序对集合进行排序,而 OrderByDescending 则按照降序排序。它们都接受一个 Func 类型的委托作为排序的关键字。

List numbers = new List { 5, 2, 8, 1, 4, 7 };// 使用 LINQ 按升序排序var sortedNumbers = from n in numbersorderby nselect n;foreach (var num in sortedNumbers){Console.WriteLine(num); // 输出: 1, 2, 4, 5, 7, 8}List numbers = new List { 5, 2, 8, 1, 4, 7 };// 使用 LINQ 按降序排序var sortedNumbersDesc = from n in numbersorderby n descendingselect n;foreach (var num in sortedNumbersDesc){Console.WriteLine(num); // 输出: 8, 7, 5, 4, 2, 1}

可以将 Where 和 OrderBy 结合在一起,先进行过滤,再进行排序。

List numbers = new List { 1, 2, 3, 6, 7, 8 };// 使用 LINQ 先过滤,再排序var result = from n in numberswhere n > 5orderby n ascendingselect n;foreach (var num in result){Console.WriteLine(num); // 输出: 6, 7, 8}

LINQ 还支持链式调用,即方法调用语法。你可以将多个 LINQ 操作方法串联在一起,进行过滤、排序等操作。

List numbers = new List { 1, 2, 3, 6, 7, 8 };// 使用链式调用过滤和排序var result = numbers.Where(n => n > 5).OrderBy(n => n);foreach (var num in result){Console.WriteLine(num); // 输出: 6, 7, 8}List numbers = new List { 5, 2, 8, 1, 4, 7 };// 使用链式调用按降序排序var sortedNumbersDesc = numbers.OrderByDescending(n => n);foreach (var num in sortedNumbersDesc){Console.WriteLine(num); // 输出: 8, 7, 5, 4, 2, 1}

如果你需要按照多个条件进行排序,可以使用 ThenBy 和 ThenByDescending 方法。这些方法用于在第一个排序条件基础上,再进行第二个排序。

List numbers = new List { 5, 2, 8, 1, 4, 7 };// 使用 ThenBy 进行多重排序var sortedNumbers = numbers.OrderBy(n => n).ThenByDescending(n => n);foreach (var num in sortedNumbers){Console.WriteLine(num); // 输出: 1, 2, 4, 5, 7, 8}

如果你排序的是字符串,可以直接使用 OrderBy,并且可以根据字符串的字母顺序进行排序。

List names = new List { "John", "Alice", "Bob", "Dave" };// 按字母顺序排序字符串var sortedNames = names.OrderBy(name => name);foreach (var name in sortedNames){Console.WriteLine(name); // 输出: Alice, Bob, Dave, John}

来源:面试八股文

相关推荐