簡體   English   中英

ASP Net Core Web API:不支持客戶端 GroupBy

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM