Csharp/C#教程:简单示例子查询Linq分享


简单示例子查询Linq

T-SQL查询

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

LINQ to Entities替代Above Query

 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中创建一个类似的存在块

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

希望这可以帮助!

 from u in User_Users where u.Course_Enrollments.Any() select u 

如果你设置了外键。 如果没有,你可以这样做

 from u in User_Users join cu in Course_Enrollments on u.UserId equals cu.UserId select u 

您还应该使用.Distinct()调用来包装其中任何一个

上述就是C#学习教程:简单示例子查询Linq分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/989639.html

(0)
上一篇 2021年12月23日
下一篇 2021年12月23日

精彩推荐