当我们需要对一个或多个集合进行筛选、排序、分组等操作时,Linq提供了一些转换操作符(也称为方法)来处理数据,例如Where
、OrderBy
、GroupBy
等。以下是Linq中的转换操作符的详细攻略。
1. Where
Where
方法可以用于过滤出符合条件的元素。该方法的参数是返回布尔值的Lambda表达式,表示元素是否符合条件。可以通过使用链式编程(chaining)的方式多次调用Where
方法来实现多条件筛选。
示例:
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var result = numbers.Where(n => n % 2 == 0 && n > 4);
上述代码筛选出了数组numbers
中符合条件的元素。其中的Lambda表达式n => n % 2 == 0 && n > 4
表示选出能被2整除且大于4的元素,即6、8。
2. OrderBy和ThenBy
OrderBy
方法用于对元素进行升序排列,而ThenBy
方法则可以在OrderBy
的基础上进行多列排序。它们的参数都是返回排序关键字的Lambda表达式。此外,OrderByDescending
和ThenByDescending
方法可以进行降序排列。
示例:
List<Student> students = new List<Student>
{
new Student { Name = "Tom", Age = 18, Gender = Gender.Male },
new Student { Name = "Jim", Age = 20, Gender = Gender.Male },
new Student { Name = "Lucy", Age = 19, Gender = Gender.Female },
new Student { Name = "Lily", Age = 18, Gender = Gender.Female },
new Student { Name = "Jack", Age = 20, Gender = Gender.Male },
};
var result = students.OrderBy(s => s.Age).ThenBy(s => s.Name);
上述代码将学生按照年龄升序排序,年龄相同时按照姓名升序排序。
3. GroupBy
GroupBy
方法可以根据指定的键(一个Lambda表达式)对元素进行分组。返回值是一个IGrouping<TKey, TElement>
类型的序列,其中TKey
表示分组的键,TElement
表示元素类型。分组后的数据可以使用Select
方法进行投影。
示例:
List<Student> students = new List<Student>
{
new Student { Name = "Tom", Age = 18, Gender = Gender.Male },
new Student { Name = "Jim", Age = 20, Gender = Gender.Male },
new Student { Name = "Lucy", Age = 19, Gender = Gender.Female },
new Student { Name = "Lily", Age = 18, Gender = Gender.Female },
new Student { Name = "Jack", Age = 20, Gender = Gender.Male },
};
var result = students.GroupBy(s => s.Age).Select(g => new { Age = g.Key, Count = g.Count() });
上述代码将学生按照年龄进行分组,并统计每个年龄下有多少个学生。
以上是Linq中常用的转换操作符的简单介绍。在使用过程中,需要了解Lambda表达式的语法和IEnumerable接口的延迟执行特性,以避免出现错误。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linq中的转换操作符 - Python技术站