sql - 如何在 from 语句中使用子查询进行 LINQ 查询?

标签 sql linq linq-to-sql

我可以在 LINQ to SQL 上进行这种类型的 SQL 查询吗?

(此查询只是一个示例)

select *
from orders as o
left outer join (select * from ordersdetail where status = 'A') as od
on o.id = od.orderid

我需要的是如何将子查询放入“from”语句中。

谢谢

最佳答案

只需按照通常的方式执行订单详细信息条件即可:

from o in orders
join od from orderdetails on o.id = od.orderid
  into details
where details.status == 'A'
select new { Order = o, Details = details}

(注意,Details 是一个序列,对于每个匹配的详细信息记录,可以使用 First 和 FirstOrDefault 等 LINQ 运算符仅提取一个。)

或者使用表达式作为数据源

from o in orders
join od from orderdetails.Where(d => d.Status == 'A') on o.id = od.orderid
  into details
select new { Order = o, Details = details}

甚至,使用另一个理解表达式作为源表达式:

from o in orders
join od from (from d in orderdetails
              where d.Status == 'A'
              select d)
  on o.id = od.orderid
  into details
select new { Order = o, Details = details}

(设置 DataContextLog 属性允许您查看 SQL,以便您可以比较实际生成的 SQL。)

编辑:更改为使用 Group Join (... into var) 来获取外连接(而不是内连接)。

关于sql - 如何在 from 语句中使用子查询进行 LINQ 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1070122/

相关文章:

mysql - 有条件地选择表格的某些部分

asp.net - 用于将非英文字符存储到 SQL 数据库的 HTML/ASPX 文本框

c# - 使用 Linq 在列表中查找受骗对象

c# - 转换通用列表的代码清晰度?

c# - Linq to SQL 的问题

SQL SUM 忽略 NULL 值

mysql - 关于我的 Deck Builder 数据库的建议

C#WPF使用数据网格从数据库中删除带有主键的项目

c# - 使用 Linq 搜索数据库

c# - Linq : To join or not to join (which is the better way, 联接或关系)