小编典典

简单示例子查询Linq

sql

T-SQL查询

Select * from dbo.User_Users
Where UserID IN (Select UserID from Course_Enrollments)

上面查询的LINQ to Entities替代

var innerquery = from en in Course_Enrollments
select en.UserID;

var query = from u in User_Users
where innerquery.Contains(u.UserID)
select u;

在stackoverflow上有很多复杂的子查询,我只想看一个简单的例子,说明如何通过linq完成一个简单的子查询。


阅读 203

收藏
2021-05-05

共1个答案

小编典典

简单的答案是使用 “ let” 关键字并生成一个子查询,该查询支持您的主要实体的条件集。

var usersEnrolledInCourses = from u in User_Users
                                 let ces = from ce in Course_Enrollments
                                           select ce.UserID
                                 where ces.Contains(u.UserID)
                             select u;

这将在TSQL中创建一个存在块,类似于

SELECT [Extent1].*
   FROM dbo.User_Users AS Extent1
   WHERE EXISTS (SELECT 1 AS [C1]
                     FROM dbo.Course_Enrollements AS Extent2
                     WHERE (Extent2.UserID = Extent1.UserId))

它接近您的要求,通常会在SQL Server上创建相同的查询计划。

希望这可以帮助!

2021-05-05