搜索在数组的数组索引
问题描述:
我有数组的数组:搜索在数组的数组索引
昏暗IDMUsers方式列表(阵列)
我填充此阵列的信息。示例: [{Data1a,Data2a,Data3a,...,Data30a},{Data1b,Data2b,Data3b,...,Data30b},{Data1c,Data2c,Data3c,...,Data30c}]
现在,我需要找到例如“Data3b”,并且函数必须返回它所在的寄存器编号,在这种情况下,它必须返回第2条记录。即{Data1b,Data2b,Data3b,...,Data30b }
我正在使用VB.Net。
我的代码是:
Sub Main()
Dim TecoReader As New FileManagement
Dim IDMUsers As List(Of Array)
' Populate Array
IDMUsers = TecoReader.ReadFromFile(My.Settings.ActivosIDMFilePath, My.Settings.CharSeparator)
Console.writeline (SearchInArray("text"))
end sub
Private Function SearchInArray(ByVal ToSearchFor As String) As String
For Each Register In IDMUsers
For Each Field In Register
If Field = ToSearchFor Then
Return Register(26) & " - " & Register(27)
End If
Next
Next
Return ""
End Function
它的工作原理与SeachInArray功能,但我有一个大阵(20K寄存器),所以是非常缓慢,我需要一个更好的方法。
答
我的代码是在C#中,可能是它有助于您避免至少一个FOR EACH循环....
int mainArrayIndex = 0;
string arrayIndex = string.Empty;
int searchIdex = 0;
foreach (string[] item in jaggedArray)
{
mainArrayIndex++;
searchIdex = Array.BinarySearch(item, "H");
if (searchIdex > 0)
{
arrayIndex = mainArrayIndex + "," + searchIdex.ToString();
break;
}
}
数据是否总是有特定的格式(FE第一指数结束'a',第二个以'b'结尾,...)?我的意思是,存在哪些规则?如果它不能包含任意数据,则可以使用像Dictionary这样的其他集合。 –
数据没有这种格式。它只是表示阵列信息。我无法更改IDMUsers的类型。它必须是列表(的数组)的类型。 – Oblongo
如果您无法更改集合类型,并且数据没有特定的格式,那么这是唯一的选择(LINQ方法不会更有效)。您可以使用数据库而不是文件。 –