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

发布于 2024-07-05 01:37:29 字数 129 浏览 6 评论 0原文

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

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

I have an IList that contains items ( parent first ), they need to be added to a Diagram Document in the reverse order so that the parent is added last, drawn on top so that it is the first thing to be selected by the user.

What's the best way to do it? Something better/more elegant than what I am doing currently
which I post below..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

虚拟世界 2024-07-12 01:37:29

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

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

NewItems is my List here... This is a bit clunky though.

for(int iLooper = obEvtArgs.NewItems.Count-1; iLooper >= 0; iLooper--)
            {
                GoViewBoy.Document.Add(CreateNodeFor(obEvtArgs.NewItems[iLooper] as IMySpecificObject, obNextPos));
            }
摘星┃星的人 2024-07-12 01:37:29

你不需要 LINQ:

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

You don't need LINQ:

var reversed = new List<T>(original); // assuming original has type IList<T>
reversed.Reverse();
foreach (T e in reversed) {
  ...
}
慢慢从新开始 2024-07-12 01:37:29

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

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

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

If you have .NET 3.5 you could use LINQ's Reverse?

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

(Assuming you're talking about the generic IList)

时光倒影 2024-07-12 01:37:29

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

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

这消除了反向 for 循环和 as 转换的噪音,以从原始对象获取强类型对象收藏。

Based on the comments to Davy's answer, and Gishu's original answer, you could cast your weakly-typed System.Collections.IList to a generic collection using the System.Linq.Enumerable.Cast extension method:

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

This removes the noise of both the reverse for loop, and the as cast to get a strongly-typed object from the original collection.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文