我们正在将 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));
我想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 列上联接这些表。