簡體   English   中英

(實體) Linq Group By 語句類型轉換

[英](Entity) Linq Group By statement type conversion

我無法將列表類型從 group by 語句轉換回我可以使用的類型。

我知道 group by 向列表添加了一個鍵,但是我如何擺脫它,我的情況將它轉換回List<UserAnswers> 任何人都可以提供一些見解或指出我正確的方向嗎?

        public async Task<List<UserAnswers>>
    GetQuestionsWellAsync(string UserName) // get questions
        {
            return await ctx.UserAnswers.Where(x => x.UserId == UserName && x.Correct == 1).
                GroupBy(c => c.QuestionId).Where(grp => grp.Count() > 2).ToListAsync();

您可以使用.SelectMany()將分組展平為單個聚合列表。

public async Task<List<UserAnswers>> GetQuestionsWellAsync(string UserName)
{
    return await ctx.UserAnswers
        .Where(x => x.UserId == UserName && x.Correct == 1)
        .GroupBy(c => c.QuestionId)
        .Where(grp => grp.Count() > 2)
        .SelectMany(grp => grp)
        .ToListAsync();
}

根據您的更新,EF 似乎無法翻譯 GroupBy + Where Count() 表達式。 您可能需要先將分組數據投影到 memory 中,然后再進行過濾。

public async Task<List<UserAnswers>> GetQuestionsWellAsync(string UserName)
{
    return (await userAnswers
        .Where(x => x.UserId == UserName && x.Correct == 1)
        .GroupBy(c => c.QuestionId)
        .ToListAsync())
        .Where(grp => grp.Count() > 2)
        .SelectMany(grp => grp)
        .ToList();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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