簡體   English   中英

如何在Linq中通過實體獲取帶有分區的Row_Number

[英]How to get Row_Number with partition by in Linq to entity

我想獲取每個組的行號。

我找到了一些文章,但在EF linq中不起作用。 在此處輸入圖片說明

var aa = entity.PackOrderMedicineHistory.GroupBy(x => x.MedicineID)
.Select(g => new { Group = g, count = g.Count()})
.SelectMany(e => e.Group.Select(v => v)
    .Zip(Enumerable.Range(1, e.count), (i, j) => new {i.MedicineID, rn = j})).Dump();

這是網上的文章。 但是Linq to實體顯示以下錯誤'NotSupportedException'

你能給我什么主意嗎,以便我能得到每組的行號?

我還有另一個問題。 我們的某個表有2500萬條記錄。 我需要進行一些分組並使用聚合函數。 但是查詢非常慢..我有很好的查詢嗎?

您可以在服務器上處理分組依據,然后在客戶端添加行號:

var aa = entity.PackOrderMedicineHistory.GroupBy(x => x.MedicineID)
               .Select(g => new { Group = g, count = g.Count()})
               .SelectMany(e => e.Group.Select((v, rn) => new { v.MedicineID, rn })).Dump();

暫無
暫無

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

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