LINQ 标准查询操作符详解:Select 和 SelectMany

2 下载量 76 浏览量 更新于2024-08-29 收藏 173KB PDF 举报
LINQ 标准查询操作符 LINQ(Language Integrated Query)是一种强大的查询语言,允许开发者使用 SQL 语句风格的语法来查询各种数据源。LINQ 提供了一组标准查询操作符,用于对数据源进行查询、过滤、排序、分组和投影等操作。本文将详细介绍 LINQ 的标准查询操作符,包括投影操作符、过滤操作符、排序操作符、分组操作符和聚合操作符等。 一、投影操作符 投影操作符用于将数据源中的数据转换为所需的格式。常用的投影操作符有 Select 和 SelectMany。 1. Select Select 操作符对单个序列或集合中的值进行投影。例如,下面的示例中使用 Select 从序列中返回 Employee 表的所有列: ```csharp using (NorthwindDataContext db = new NorthwindDataContext()) { // 查询语法 var query = from e in db.Employees where e.FirstName.StartsWith("M") select e; // 方法语法 var q = db.Employees .Where(e => e.FirstName.StartsWith("M")) .Select(e => e); foreach (var item in query) { Console.WriteLine(item.FirstName); } } ``` 当然,你也可以返回单个列,例如: ```csharp var query = from e in db.Employees where e.FirstName.StartsWith("M") select e.FirstName; ``` 你也可以返回序列中的某几列,例如: ```csharp var query = from e in db.Employees where e.FirstName.StartsWith("M") select new { e.FirstName, e.LastName, e.Title }; ``` 2. SelectMany SelectMany 操作符提供了将多个 from 子句组合起来的功能,它将每个对象的结果合并成单个序列。例如: ```csharp using (NorthwindDataContext db = new NorthwindDataContext()) { // 查询语法 var query = from e in db.Employees from o in e.Orders select o; // 方法语法 var q = db.Employees .SelectMany(e => e.Orders); foreach (var item in query) { Console.WriteLine(item.OrderID); } } ``` 二、过滤操作符 过滤操作符用于筛选数据源中的数据。常用的过滤操作符有 Where 和 OfType。 1. Where Where 操作符用于筛选数据源中的数据。例如: ```csharp var query = from e in db.Employees where e.FirstName.StartsWith("M") select e; ``` 2. OfType OfType 操作符用于筛选指定类型的数据。例如: ```csharp var query = from e in db.Employees.OfType<Employee>() where e.FirstName.StartsWith("M") select e; ``` 三、排序操作符 排序操作符用于对数据源中的数据进行排序。常用的排序操作符有 OrderBy 和 ThenBy。 1. OrderBy OrderBy 操作符用于对数据源中的数据进行升序排序。例如: ```csharp var query = from e in db.Employees orderby e.FirstName select e; ``` 2. ThenBy ThenBy 操作符用于对数据源中的数据进行降序排序。例如: ```csharp var query = from e in db.Employees orderby e.FirstName thenby e.LastName select e; ``` 四、分组操作符 分组操作符用于对数据源中的数据进行分组。常用的分组操作符有 GroupBy 和 GroupByInto。 1. GroupBy GroupBy 操作符用于对数据源中的数据进行分组。例如: ```csharp var query = from e in db.Employees group e by e.DepartmentID into g select new { DepartmentID = g.Key, EmployeeCount = g.Count() }; ``` 2. GroupByInto GroupByInto 操作符用于对数据源中的数据进行分组,并对每个组进行聚合操作。例如: ```csharp var query = from e in db.Employees group e by e.DepartmentID into g select new { DepartmentID = g.Key, EmployeeCount = g.Count(), TotalSalary = g.Sum(e => e.Salary) }; ``` 五、聚合操作符 聚合操作符用于对数据源中的数据进行聚合操作。常用的聚合操作符有 Sum、Average、Max、Min、Count 等。 1. Sum Sum 操作符用于计算数据源中的总和。例如: ```csharp var sum = db.Employees.Sum(e => e.Salary); ``` 2. Average Average 操作符用于计算数据源中的平均值。例如: ```csharp var average = db.Employees.Average(e => e.Salary); ``` 3. Max Max 操作符用于计算数据源中的最大值。例如: ```csharp var max = db.Employees.Max(e => e.Salary); ``` 4. Min Min 操作符用于计算数据源中的最小值。例如: ```csharp var min = db.Employees.Min(e => e.Salary); ``` 5. Count Count 操作符用于计算数据源中的记录数。例如: ```csharp var count = db.Employees.Count(); ``` LINQ 的标准查询操作符提供了一种强大且灵活的方式来查询和处理数据。通过了解这些操作符的使用方法,你可以更好地使用 LINQ 来解决实际问题。