我正在尝试找出一种方法来对具有重复值的列表中的项目进行排名。
例如:
| QTECDE公司|等级|
| - ------|- ------|
| 四十|1个|
| 三十|第二章|
| 二十四|三个|
| 十八|四个|
| 四个|五个|
| 四个|五个|
| 三个|六个|
但我的代码总是跳过一个数字当我有一个重复的排名。这是我得到的:
| QTECDE公司|等级|
| - ------|- ------|
| 四十|1个|
| 三十|第二章|
| 二十四|三个|
| 十八|四个|
| 四个|五个|
| 四个|五个|
| 三个|7(7个,共6个)|
下面是我的代码:
var rankedList = oList.OrderByDescending(p => p.QTECDE)
.Select((p, i) => new { Order = 1 + i, lst = p })
.GroupBy(p => new { p.lst.QTECDE })
.SelectMany(g => g.Select(p => new
{
RANK = g.Min(x => x.Order),
NO_ART = p.lst.NO_ART,
QTECDE = p.lst.QTECDE,
LIB_INDEX_FR_SUP = p.lst.LIB_NIVEAU_SUP_FR,
LIB_IMAGE = p.LIB_IMAGE,
}));
有什么办法吗?
2条答案
按热度按时间iyfjxgzm1#
您只需要组的索引,而不是项目的索引:
字符串
tgabmvqs2#
您正在确定源项目的排名/顺序。您希望将
(item, index)
应用于您的SelectMany()
,而不是应用于您的Select()
。