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