簡體   English   中英

在 EntityFramework 中選擇每個組中的前 n 行

[英]Select top n rows in each group in EntityFramework

我正在嘗試獲取每種類型的最新內容,目前我正在使用類似於以下代碼的內容來獲取每種類型的 n 條記錄

int n = 10;
var contents = Entities.OrderByDescending(i => i.Date);

IQueryable<Content> query = null;
for (int i = 1; i<=5; i++)
{
    if (query == null)
    {
        query = contents.Where(c => c.ContentTypeIndex == i).Take(n);
    }
    else
    {
        query = query.Concat(contents.Where(c => c.ContentTypeIndex == i).Take(n));
    }
}

另一種解決方案是創建 SP,但是否可以通過在 EF 中分組來實現? 如果沒有,任何更清潔的解決方案?

contents.Where(c => c.ContentTypeIndex >= 1 && c.ContentTypeIndex <= 5)
        .GroupBy(c => c.ContentTypeIndex)
        .SelectMany(g => g.Take(n));

注意:如果要選擇所有類型的索引,那么這里不需要where過濾器。

暫無
暫無

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

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