4→→→1
 5→→→2
 6→→→3
 7→→→4
 7→→→4
 7→→→4
10→→→5
14→→→6
18→→→7
21→→→8
22→→→9
22→→→9
30→→→10
左侧是排序好的原始数据,要将其转换成从1开始的排序,
如果有重复还是重复,左侧排序中没有规则,可能是断断续续的,但结果要规则的。

解决方案 »

  1.   


    void Main()
    {
    var list=new List<int>{4,5,6,7,7,7,10,14,18};
    var result=from m in list
    join n in  list.GroupBy(x=>x).Select((x,y)=>new{x.Key,i=y+1})
    on m equals n.Key
    select new {m,n.i};

    result.ToList().ForEach(r=>Console.WriteLine("{0}\t{1}",r.m,r.i));

    /*
    4 1
    5 2
    6 3
    7 4
    7 4
    7 4
    10 5
    14 6
    18 7
    */
    }
      

  2.   

    简化一下: var result=list.GroupBy(x=>x)
       .Select((x,y)=>x.Select(n=>new{x.Key,i=y+1}))
       .SelectMany(x=>x);