5

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

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

4

4 回答 4

7

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

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

(假设您在谈论通用 IList)

于 2008-09-18T08:55:07.567 回答
2

根据对Davy 的回答Gishu 的原始回答的评论,您可以使用扩展方法将弱类型System.Collections.IList转换为通用集合:System.Linq.Enumerable.Cast

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

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

于 2008-09-28T17:24:25.537 回答
0

NewItems 是我的列表......不过这有点笨拙。

for(int iLooper = obEvtArgs.NewItems.Count-1; iLooper >= 0; iLooper--)
            {
                GoViewBoy.Document.Add(CreateNodeFor(obEvtArgs.NewItems[iLooper] as IMySpecificObject, obNextPos));
            }
于 2008-09-18T08:44:48.370 回答
0

您不需要 LINQ:

var reversed = new List<T>(original); // assuming original has type IList<T>
reversed.Reverse();
foreach (T e in reversed) {
  ...
}
于 2013-06-25T14:21:11.047 回答