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

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

有帮助吗?

解决方案

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

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

(假设您正在谈论通用 IList)

其他提示

根据评论 戴维的回答, , 和 纪州的原始答案, ,你可以将你的弱类型 System.Collections.IList 使用通用集合 System.Linq.Enumerable.Cast 扩展方法:

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

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

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

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

你不需要 LINQ:

var reversed = new List<T>(original); // assuming original has type IList<T>
reversed.Reverse();
foreach (T e in reversed) {
  ...
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top