如何以相反的顺序迭代.Net IList集合?

时间:2008-09-18 08:44:16

标签: .net collections iteration

我有一个包含项目的IList(父项首先),它们需要以相反的顺序添加到图表文档中,以便最后添加父项,在顶部绘制,以便它是第一个被选中的项目用户。

最好的方法是什么?比我现在做的更好/更优雅 我发布在下面..

4 个答案:

答案 0 :(得分:7)

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

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

(假设你在谈论通用的IList)

答案 1 :(得分:2)

根据对Davy's answerGishu's original answer的评论,您可以使用System.Collections.IList扩展方法将您的弱类型System.Linq.Enumerable.Cast投射到通用集合:

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

这会消除反向for循环和as强制转换的噪音,以从原始集合中获取强类型对象。

答案 2 :(得分:0)

NewItems在这里是我的名单......虽然这有点笨拙。

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

答案 3 :(得分:0)

您不需要LINQ:

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