如何以相反的顺序迭代.Net IList集合?
时间:2020-03-06 14:20:26 来源:igfitidea点击:
我有一个包含项的IList(首先是父项),需要以相反的顺序将它们添加到关系图文档中,以便最后添加父项,并在顶部绘制,以便它是用户首先选择的东西。
最好的方法是什么?比我目前做的更好/更优雅的东西
我在下面发布
解决方案
NewItems是我的列表在这里...虽然有点笨拙。
for(int iLooper = obEvtArgs.NewItems.Count-1; iLooper >= 0; iLooper--) { GoViewBoy.Document.Add(CreateNodeFor(obEvtArgs.NewItems[iLooper] as IMySpecificObject, obNextPos)); }
如果我们拥有.NET 3.5,则可以使用LINQ的Reverse吗?
foreach(var item in obEvtArgs.NewItems.Reverse()) { ... }
(假设我们正在谈论通用的IList)
根据对Davy答案的评论以及Gishu的原始答案,我们可以使用System.Linq.Enumerable.Cast扩展方法将弱类型的System.Collections.IList转换为通用集合:
var reversedCollection = obEvtArgs.NewItems .Cast<IMySpecificObject>( ) .Reverse( );
这消除了反向" for"循环和" as"强制从原始集合中获取强类型对象的噪声。