У меня есть какой-то устаревший код, который состоит из:
A Dictionary
(dictParts
), заполненных во время запуска ок.350 000 предметов (не изменяется во время выполнения).dictParts
является System.Collections.Generic.Dictionary(Of String, System.Data.DataRow)
.
Каждый элемент в dictParts
является System.Collections.Generic.KeyValuePair(Of String, System.Data.DataRow)
.
An Array
(arrOut
), в который часто добавляются и удаляются элементы (обычно от 2 до 6 элементов в массиве).arrOut
- это System.Array
, содержащий только string
с.
Каждый раз, когда массив изменяется, мне нужно посмотреть, есть ли:
- Все элементы в массиве существуют вindex
- Некоторые элементы в массиве существуют в индексе
Я предполагаю, что цикл по индексу 350 000 при каждом изменении массива приведет к значительному снижению производительности и будет выглядеть какLINQ, чтобы помочь.
Я пробовал следующее:
Private Sub btnTest_Click(sender As System.Object, e As System.EventArgs) Handles btnTest.Click
Dim dictParts = New Dictionary(Of Integer, String) _
From {{1, "AA-10-100"}, _
{2, "BB-20-100"}, _
{3, "CC-30-100"}, _
{4, "DD-40-100"}, _
{5, "EE-50-100"}}
Dim arrOut() As String = {"AA-10-100", "BB-20-100", "CC-30-100"}
'Tried
Dim allPartsExist As IEnumerable(Of String) = arrOut.ToString.All(dictParts)
'And this
Dim allOfArrayInIndex As Object = arrOut.ToString.Intersect(dictParts).Count() = arrOut.ToString.Count
End Sub
Я продолжаю получать ошибки: Невозможно привести объект типа 'System.Collections.Generic.Dictionary 2[System.Int32,System.String]' to type 'System.Collections.Generic.IEnumerable
1 [System.Char] '.
Пожалуйста, кто-нибудь может посоветовать, где я иду не так.