mz1*_*378 5 linq entity-framework-core
由于即使在 EF core 6 中也无法翻译组联接查询,因此我将该查询编写为相关子查询。但我收到错误:
"查询包含类型为 'IQueryable' 的投影 'c => DbSet() .Where(c2 => c2.Country == c.Country) .AsQueryable()'。最终投影中的集合必须是 'IEnumerable'类型,如“List”。考虑使用“ToList”或其他一些机制将“IQueryable”或“IOrderedEnumerable”转换为“IEnumerable”。,内部:
以下 Linq 给我带来了这个错误:
IQueryable<CoronaVirus> covids = context.CoronaViruses.AsQueryable();
IQueryable<CoronaVirusDTO> covids2 = (from c in covids
let rt = context.CoronaViruses.Where(c2 => c2.Country == c.Country).AsQueryable()
select new CoronaVirusDTO()
{
Id = c.Id,
Country = c.Country,
Date = c.Date,
TodayCases = c.TodayCases,
TodayDeaths = c.TodayDeaths,
TotalCases = rt.Sum(it => it.TodayCases),
TotalDeaths = rt.Sum(it => it.TodayDeaths)
}).AsQueryable();
Run Code Online (Sandbox Code Playgroud)
如何更正此查询?
小智 6
子查询必须使用ToList()。不用担心,它不会生成额外的 SQL 来查询 CoronaViruses。它将被解析为 SQL WHERE 作为 linq 表达式的一部分。
另外,在上面的示例中,也许您可以使用 join。
| 归档时间: |
|
| 查看次数: |
2575 次 |
| 最近记录: |