是否可以使用 LinQ 编写子查询?

Is it possible to write subqueries with LinQ?

假设我有这两个表:

我想要这样的 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 子句中,您正在测试 longMytableB.

的不兼容类型的相等性

在比较之前,您必须在子查询中 select IDTableA:

IEnumerable<MytableA> matchedTableAs = dbContext.MytableA
    .Where(x=>x.IDTableA == dbContext.MytableB.Where(y=>y.IDTableB == 123)
        .Select(b => b.IDTableA).SingleOrDefault());