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完成一个简单的子查询。
简单的答案是使用 “ 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上创建相同的查询计划。
希望这可以帮助!