2008-09-18 42 views
5

我有一個包含項目(母公司第一),他們需要被添加到圖文檔以相反的順序,以使父最後加入,在上面繪製,以便它是由被選擇的第一件事,一個IList用戶。如何以相反順序迭代.Net IList集合?

這樣做的最佳方法是什麼?比我目前正在做的更好/更優雅的 ..

回答

7

如果你有.NET 3.5,你可以使用LINQ的Reverse?

foreach(var item in obEvtArgs.NewItems.Reverse()) 
{ 
    ... 
} 

(假設你在談論一般的IList)

0

NewItems是我的列表...雖然這有點笨重。

for(int iLooper = obEvtArgs.NewItems.Count-1; iLooper >= 0; iLooper--) 
      { 
       GoViewBoy.Document.Add(CreateNodeFor(obEvtArgs.NewItems[iLooper] as IMySpecificObject, obNextPos)); 
      } 
+1

爲什麼不在問題包括這一點?爲什麼發佈作爲答案? – 2008-09-18 09:01:58

+0

來自常見問題解答: 我可以回答我自己的問題嗎?如果這不是一個真正的問題呢? 最好實際提交答案,而不是僅僅回答問題本身。這可以讓答案得到表決並公平評估其他人的答案。 – digiguru 2008-09-18 09:08:04

2

基礎上意見Davy's answerGishu's original answer,你可以投你弱類型System.Collections.IList使用System.Linq.Enumerable.Cast擴展方法泛型集合:

var reversedCollection = obEvtArgs.NewItems 
    .Cast<IMySpecificObject>() 
    .Reverse(); 

這刪除反向for循環和as投的噪聲從原點得到一個強類型的對象al集合。

0

你不需要LINQ:

var reversed = new List<T>(original); // assuming original has type IList<T> 
reversed.Reverse(); 
foreach (T e in reversed) { 
    ... 
}