2013-05-21 46 views
0

我有以下linq查詢productionMachines.OrderBy(x => x.TimeDone).ToList(); 現在我想分配一些屬性X,它的位置索引在集合中。 像第一個生產機器將收到X等於1 secound 2等...如何將集合的索引分配給屬性

示例生產機器有5個條目。 productionMachine [0] .X將有1 .. .. .. productionMachine [4] .X將有5

+2

其他形式你能請澄清你的問題多一點。我現在讀了你的問題3次,現在仍然知道你想要做什麼...... :) –

+1

你可能想使用類似'.Select((row,index)=> new {row.X = index}) ' – oleksii

+0

@oleksii以及它將會是索引+ 1,因爲OP希望索引從1開始! –

回答

4

使用select

productionsMachines.OrderBy(x => x.TimeDone) 
            .Select((x,i) => 
             { 
              x.Property = i+1; 
              return x; 
             }); 
0
int index= 1; 

productionMachines 
    .OrderBy(p => p.TimeDone) 
    .ToList() 
    .ForEach(p2 => 
     { 
      p2.X = index++; 
     } 
    ); 
+1

這種方法的缺點是集合會迭代兩次。一次爲'ToList()',然後一次爲ForEach –

+0

謝謝@BobVale澄清。我以前從來沒有想過這件事。現在我應該更改我的項目的一些代碼。 :) –