无法在 .Net Core 3.1 中翻译旧 LINQ "Join Into" 表达式

Old LINQ "Join Into" Expression cannot be Translated in .Net Core 3.1

我有一个旧的 Linq 查询抛出错误 'Could not be translated'。我对lambda表达式很在行,但不会加入。

为了保护隐私,我对表格进行了重命名。这些不是表的实际名称!

var data = (from a in db.TableA
join b in db.TableB on a.Id equals c.Id
join c in db.TableC on a.OtherId equals c.Id
into grp
from g in grp.Take(1)
join d in db.D on g.SomethingId equals d.SomethingId
where.....

orderby c.Name 

select new {
...
}).toList()

所以所有这些都有效,直到 grp.Take(1)

中的 'into group from g

我不知道如何重写它以便 .Net Core 3.1 可以读取它。

如果确实需要,我可以提供 select new 的 where 语句和属性,但我认为这并不那么重要。

按以下方式重写您的查询:

var data = 
    (from a in db.TableA
    join b in db.TableB on a.Id equals c.Id
    from c in db.TableC.Where(c => a.OtherId == c.Id).Take(1)
    join d in db.D on c.SomethingId equals d.SomethingId
    where.....

    orderby c.Name 

    select new {
    ...
    }).toList()