📅  最后修改于: 2023-12-03 14:43:54.399000             🧑  作者: Mango
在 LINQ 中,子查询指的是在一个查询中嵌套了另一个查询。这种查询在 SQL 中也非常常见。
子查询可以帮助我们简化复杂的查询,并且可以在查询中使用聚合函数(如 SUM、AVG、MAX、MIN、COUNT 等)。
在 LINQ 中,子查询可以使用两种方式来实现:嵌套查询和连接查询。
嵌套查询通常用于简单的查询。下面是一个示例,查询所有年龄大于 25 的用户:
var query = from user in users
where user.Age > (from u in users select u.Age).Distinct().Max()
select user;
这个查询中,子查询使用了 DISTINCT 和 MAX 聚合函数,来查询年龄最大值。
连接查询通常用于复杂的查询。连接查询需要使用 join 关键字来连接两个查询,并使用 into 关键字来声明一个临时变量来存储查询结果。
下面是一个示例,查询每个部门的平均工资:
var query = from dept in departments
join emp in employees on dept.DeptID equals emp.DeptID into emps
select new { DeptID = dept.DeptID, AvgSalary = emps.Average(e => e.Salary) };
这个查询中,外层查询查询所有部门,内层查询使用 join 关键字连接两个表。into 关键字声明一个临时变量 emps,存储查询结果,最终查询结果使用 Average 聚合函数进行计算。
使用子查询能够简化我们的查询语句,并且能够让我们在查询中使用聚合函数。在 LINQ 中,子查询可以使用嵌套查询和连接查询两种方式来实现。