假设我有这两个表:
我想要像LinQ这样的子查询:
select *
from MytableA
where IDTableA = (select IDTable A From TableB where IDTableB = 123);
我正在尝试这样的事情:
MytableA myTableAEntity = dbContext.MytableA
.Where(x=>x.IDTableA == dbContext.MytableB.Where(y=>y.IDTableB == 123).SingleOrDefault();
但是我有一个错误,表示我无法将IQueryable<long>
投射到长片中。
是否可以做类似的事情?
非常感谢。
答案 0 :(得分:2)
在您的第一个Where
子句中,您正在测试不兼容类型long
和MytableB
的相等性。
在比较之前,您必须在子查询中选择IDTableA
:
IEnumerable<MytableA> matchedTableAs = dbContext.MytableA
.Where(x=>x.IDTableA == dbContext.MytableB.Where(y=>y.IDTableB == 123)
.Select(b => b.IDTableA).SingleOrDefault());