8,497
社区成员
发帖
与我相关
我的任务
分享
数据库表为:
一个 File 包含 0 个或多个 Attrib,保存在 DataAttrib 表中。
需要查询出来的结果是:
List<File,List<Attrib>>
Linq 语句如下:
from f in db.Files
join attr in (
from da in db.DataAttribs
join a in db.Attribs on da.AttribID equals a.ID
select new { da.DataID, a.Name }
) on f.ID equals attr.DataID into attrs
select new {f, attrs}
在 Linq for SQLServer 中查询正常,在 EF Core 5 中报错:could not be translated
请教各位是哪里的问题?该如何解决?
把关系建好了,用Include和ThenInclude查询就好了
var files = _context.Files.Include(f => f.DataAttrib).ThenInclude(da => da.Attrib);
查了资料,原来是 EF Core 中对此类 into 的语法(对应 GroupJoin)不再转换了。改为:
from f in db.Files
select new {
f,
attrs = db.DataAttribs.Join(db.Attribs, da => da.AttribID, a => a.ID, (da, a) => new { da.DataID, a }).Where(x => x.DataID == f.ID).Select(x => x.a).toList()
}