C# EF Core:无法翻译LINQ表达式。A”;其中“;在”;选择“; var subProjects=await\u projectRepository.Where(p=>p.Id==Id) .SelectMany(p=>p.SubProjects .选择(x=>new { 子项目=x, PdfCount=x.文件 .WhereIf(query.TaskId!=null,f=>f.ProjTask.Any(t=>t.Id==query.TaskId)) .Count() })) .ToListAsync();
无法翻译LINQ表达式“f”。以可以翻译的形式重写查询,或者通过插入对“AsEnumerable”、“asAsAsAsyncEnumerable”、“ToList”或“ToListSync”的调用显式切换到客户端计算。有关更多信息,请参阅。 System.InvalidOperationException:无法翻译LINQ表达式“f”。以可以翻译的形式重写查询,或者通过插入对“AsEnumerable”、“asAsAsAsyncEnumerable”、“ToList”或“ToListSync”的调用显式切换到客户端计算。有关更多信息,请参阅C# EF Core:无法翻译LINQ表达式。A”;其中“;在”;选择“; var subProjects=await\u projectRepository.Where(p=>p.Id==Id) .SelectMany(p=>p.SubProjects .选择(x=>new { 子项目=x, PdfCount=x.文件 .WhereIf(query.TaskId!=null,f=>f.ProjTask.Any(t=>t.Id==query.TaskId)) .Count() })) .ToListAsync();,c#,entity-framework,C#,Entity Framework,无法翻译LINQ表达式“f”。以可以翻译的形式重写查询,或者通过插入对“AsEnumerable”、“asAsAsAsyncEnumerable”、“ToList”或“ToListSync”的调用显式切换到客户端计算。有关更多信息,请参阅。 System.InvalidOperationException:无法翻译LINQ表达式“f”。以可以翻译的形式重写查询,或者通过插入对“AsEnumerable”、“asAsAsAsyncEnumerable”、“ToList”或“ToListSync”的
公共类项目
{
//……其他财产
公共虚拟ICollection子项目{get;set;}
}
公共类子项目
{
//……其他财产
公共虚拟ICollection文件{get;set;}
}
公共类文件
{
//……其他财产
公共虚拟ICollection项目任务{get;set;}
}
。如果
?你能在表达式中使用它吗?你可能得把它去掉。您可能能够定义表达式过滤器=(query.TaskId!=null)?f=>f.ProjTask.Any(t=>t.Id==query.TaskId):f=>true
在查询外部,然后在表达式树内部使用.Where(filter)
。@JeremyLakeman Yes,Where如果是问题,我在外部定义了表达式。但是我应该在Where(filter)
之前添加AsQueryable()
,否则就无法编译。谢谢你的帮助~