是否可以使用 LinQ 编写子查询?
Is it possible to write subqueries with LinQ?
假设我有这两个表:
- TableA(IDTableA, ...)
- TableB(IDTableB, IDTableA, ...)
我想要这样的 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>
转换为 long。
是否可以这样做?
非常感谢。
在您的第一个 Where
子句中,您正在测试 long
和 MytableB
.
的不兼容类型的相等性
在比较之前,您必须在子查询中 select IDTableA
:
IEnumerable<MytableA> matchedTableAs = dbContext.MytableA
.Where(x=>x.IDTableA == dbContext.MytableB.Where(y=>y.IDTableB == 123)
.Select(b => b.IDTableA).SingleOrDefault());
假设我有这两个表:
- TableA(IDTableA, ...)
- TableB(IDTableB, IDTableA, ...)
我想要这样的 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>
转换为 long。
是否可以这样做?
非常感谢。
在您的第一个 Where
子句中,您正在测试 long
和 MytableB
.
在比较之前,您必须在子查询中 select IDTableA
:
IEnumerable<MytableA> matchedTableAs = dbContext.MytableA
.Where(x=>x.IDTableA == dbContext.MytableB.Where(y=>y.IDTableB == 123)
.Select(b => b.IDTableA).SingleOrDefault());