我有一个包含项目的IList(父项首先),它们需要以相反的顺序添加到图表文档中,以便最后添加父项,在顶部绘制,以便它是第一个被选中的项目用户。
最好的方法是什么?比我现在做的更好/更优雅 我发布在下面..
答案 0 :(得分:7)
如果你有.NET 3.5,你可以使用LINQ的Reverse吗?
foreach(var item in obEvtArgs.NewItems.Reverse())
{
...
}
(假设你在谈论通用的IList)
答案 1 :(得分:2)
根据对Davy's answer和Gishu'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) {
...
}