使用Linq-Query设置值?

Tal*_*ode 8 .net c# linq

在我的应用程序中,我有一个项目列表,我需要按价格排序,并为每个项目设置排名/位置索引.我需要存储排名,因为之后价格可能会发生变化.目前我这样做:

var sortedlistKFZ = from res in listKFZ orderby res.Price select res;
if (sortedlistKFZ.Any())
{
     int rankPosition = 1;
     foreach (Result kfz in sortedlistKFZ)
     {
           kfz.MesaAdvertNumber = rankPosition;
           rankPosition++;
     }
}
Run Code Online (Sandbox Code Playgroud)

有更短的方法吗?

Dav*_*und 9

这项工作可能吗?

int rankPosition = 1;
var sortedListKFZ = listKFZ.OrderBy(r => r.Price).Select(r => {
    r.MesaAdvertNumber = ++rankPosition;
    return r;
});
Run Code Online (Sandbox Code Playgroud)

  • 除了一个小细节之外......它的编号将从2开始.你需要改变增量到postfix(rankPosition ++)或者rankPosition的初始值为0. (2认同)