[英]ASP Net Core Web API: Client side GroupBy is not supported
我是新來的,也是 asp.net 核心的新手。
我正在使用 asp.net core 3.0 編寫一個 web api。 我編寫了以下 API 端點代碼來檢索Databases
實體列表,並按來自另一個對象Type
名為Value
的字段對它們進行分組。
//GET:api/Databases/graph
[HttpGet("graph")]
public async Task<ActionResult<IEnumerable<IGrouping<string, Database>>>> GetGraphDatabases()
{
return await _context.Databases
.Include(t => t.Type)
.Where(d => d.Type.Code == "DATABASE_TYPE")
.GroupBy(d => d.Type.Value)
.ToListAsync();
}
但是當我嘗試到達端點時,我收到以下錯誤消息: InvalidOperationException:不支持客戶端 GroupBy。
我檢查了這個答案,但沒有太大幫助。
可以請你支持。
很快,EF Core 3.0 不支持這種類型的GroupBy
。
您應該在該操作員之前明確切換到客戶評估。 其中同步版本就像插入.AsEnumerable()
一樣簡單。 對於異步版本,它不是那么容易 - 有AsAsyncEnumerable()
方法,但是您需要額外的包才能獲得GroupBy
和其他 LINQ 運算符。
解決它的最簡單方法(以內存中的一個額外列表為代價)可能是使用ToListAsync()
完成異步部分,然后使用常規 LINQ to Objects 完成其余部分。
例如這樣的事情
return (await _context.Databases
.Include(t => t.Type)
.Where(d => d.Type.Code == "DATABASE_TYPE")
.ToListAsync())
.GroupBy(d => d.Type.Value);
我正在談論的附加包是System.Linq.Async 。 有關詳細信息,請參閱將 EF Core 查詢從 2.2 轉換為 3.0 - async await 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.