无法将 SQL 查询转换为包含子查询的 linq 查询,需要处理两个表



我们正在将 SQL 查询转换为 linq 查询,此转换涉及两个表,如下所示:

select * 
from Tbl_Vulpith_Registration 
where Profile_Pic is not null 
and MemId IN (select MemId from Tbl_List_Services)

Tbl_Vulpith_RegistrationTbl_List_Services是涉及的两个表。

memId是两个表中的公共列。

这就是我们尝试将上述 SQL 查询转换为 linq 的内容:

var reglist = objentity.Tbl_Vulpith_Registration.Select(a => a).Where(a => a.Profile_Pic != null);
var listmemsmemIds = objentity.Tbl_List_Services.Select(b => b.MemId).ToList();
var finalist = reglist.Select(b => b).Where(c => c.MemId.Contains(listmemsmemIds));

我想MemId是数字类型,如果是这样,那么你用错Contains,将你的最后一个语句更正为:

var finalist = reglist.Select(b => b).Where(c => listmemsmemIds.Contains(c.MemId));

或者更好的是,使用查询语法,它将在一个语句中得到你的结果:

var finalist = (from a in objentity.Tbl_Vulpith_Registration
where a.Profile_Pic != null && (from b in objentity.Tbl_List_Services select b.MemId).Contains(a.MemId)
select a).ToList();
(from r in Tbl_Vulpith_Registration.Where(r => r.Profile_Pic != null)
from s in Tbl_List_Services.Where(s => s.MemId == r.MemId)
select r).ToList();

我相信您也可以使用这种方法,在公共 MemId 列上联接这些表。

相关内容

  • 没有找到相关文章

最新更新