我们正在将SQL查询转换为linq查询,此转换涉及两个表,如下所示:
select *
from Tbl_Vulpith_Registration
where Profile_Pic is not null
and MemId IN (select MemId from Tbl_List_Services)
Tbl_Vulpith_Registration
和Tbl_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));
答案 0 :(得分:0)
我猜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();
答案 1 :(得分:0)
(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列上加入这些表。