gpt4 book ai didi

c# - 简单示例子查询 Linq

转载 作者:行者123 更新时间:2023-11-30 14:29:42 26 4
gpt4 key购买 nike

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 完成简单的子查询。我就是这样做的,但是它不好,因为它向数据库发送了 2 个查询。

最佳答案

简单的答案是使用 “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 中创建一个类似于 exists 的 block

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 上创建相同的查询计划。

希望这对您有所帮助!

关于c# - 简单示例子查询 Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25355004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com