我正在处理一种可能很常见的情况,我甚至不知道如何在搜索中表达.

我决定寻求指导,不一定是为了获得任何代码,而是询问对于这种情况最好的方法是什么.

我有一个名为arrIntIndexesOfJobsThatWillBeKilled的列表,其中包含必须从另外5个列表中删除的项目的原始索引.

然而,当我从其他5个列表中删除一个条目时,它们被重新索引,我曾经在arrIntIndexesOfJobsThatWillBeKilled中拥有的索引现在是无效的.

我只想删除链接到原始索引的项目...

处理这种情况的最佳算法是什么?

arrIntIndexesOfJobsThatWillBeKilled = arrIntIndexesOfJobsThatWillBeKilled.Distinct.ToList

If arrIntIndexesOfJobsThatWillBeKilled.Count > 0 Then

    For Each Job As Integer In arrIntIndexesOfJobsThatWillBeKilled

        arrStrJobDescription2.RemoveAt(Job)
        arrStrPNDirectories2.RemoveAt(Job)
        arrIntJobIDDirectories2.RemoveAt(Job)
        arrStrSubDirectories2.RemoveAt(Job)
        arrStrNCFile2.RemoveAt(Job)

    Next

End If

推荐答案

您可以更改删除顺序以反转删除顺序-首先删除较大的索引.对VB不是很流利,但在C#中将如下所示:

arrIntIndexesOfJobsThatWillBeKilled = arrIntIndexesOfJobsThatWillBeKilled
    .OrderByDescending(i => i) // assuming list of integers here, or .OrderDescending() for later framework
    .Distinct()
    .ToList();

然后继续删除.

附注:

If arrIntIndexesOfJobsThatWillBeKilled.Count > 0 Then判断是多余的-foreach可以很好地处理空集合.

.net相关问答推荐

将多行参数传递给Power Shell中的DotNet Pack命令

使用.NET 8时无法识别运行标识符

使用React路由加载器获取数据不能正常工作

Msbuild try 构建 msbuild.exe 而不是我的 .csproj 文件

使用 MassTransit、.NET Core 和 RabbitMQ 的设计挑战

仅在有换行符时捕获分隔符之间的所有文本

使用 SSH.NET 查找具有特定文件名的最新 SFTP 文件

无法加载文件或程序集 不支持操作. (来自 HRESULT 的异常:0x80131515)

正则表达式在空格上拆分,除非在引号中

在 C# 中获取 log4net 日志(log)文件

如何判断 IOException 是否为 Not-Enough-Disk-Space-Exception 类型?

.NET 应用程序的链接器状态(又名请先生,我可以有一个链接器2009 年版)

在目录中创建应用程序快捷方式

C# 的部分类是糟糕的设计吗?

.Net 中的 Int128?

当程序员说针对接口而不是对象的代码时,他们是什么意思?

ReaderWriterLockSlim 什么时候比简单的锁更好?

将 Dictionary 转换为匿名对象?

在 C# 中使用 Bitmap 对象查找图像格式

什么时候使用 Tuple 和 KeyValuePair 比较好?