2015-07-03 40 views
0

我有以下列表:排序整數屬性<Object>

propDataAA 4 propDataAB propDataAC 
propDataBA 3 propDataBB propDataBC 
propDataCA 2 propDataCB propDataCC 
propDataDA 1 propDataDB propDataDC 

我想改變列表如下:

propDataAA 1 propDataAB propDataAC 
propDataBA 2 propDataBB propDataBC 
propDataCA 3 propDataCB propDataCC 
propDataDA 4 propDataDB propDataDC 

我只是想扭轉整數屬性,而所有其他數據正在停留。達到此目的的最佳方法是什麼?

+2

究竟你的數據結構是什麼?即你的目標是什麼?來源列表中始終有連續的數字1到n,或者他們可能只有3,7和11或其他類似的東西?只是想知道你是否可以循環遍歷列表設置每個項目,或者如果你需要實際讀出值... – Chris

+1

一個更有意義的例子會有幫助。這裏似乎列表中的對象的位置是新的int值。 –

+0

如果它確實是一個列表,您需要知道將它投射到什麼位置,您可以使用linq執行投射,或者您需要使用反射來獲取屬性。我認爲下面的一些答案忽略了這一點。 – Derek

回答

4

最簡單的將是提取在一個單獨的集合,屬性,下令集合,然後遍歷主列表與新的集合更新屬性,如:

var propertyList = yourMainList.Select(r=> r.YourProperty) 
           .OrderBy(r=> r) 
           .ToList(); 

//here both lists count should be same 

for(int i = 0; i < yourMainList.Count; i++) 
{ 
    yourMainList[i].YourProperty = propertyList[i]; 
} 
1
list.ForEach(a => a.property = list.IndexOf(a) + 1); 

DotNetFiddle

+0

OP不想訂購物品,但*更新*屬性的值 –

+0

此更新該屬性的值通過將其更改爲列表中的順序。如果這是OP的意圖,或者即使他們沒有按降序排列,他也想扭轉這些數字,也不清楚 – JamieD77