kav@94 Ответов: 1

Как взять элемент массива и проверить в другом другом массиве


arr1 = wavFiles.Метод toArray();
arr2 = BaseDocs.Метод toArray();
arr3 = TemplateDocs.Метод toArray();
arr4 = DraftDocs.Метод toArray();

У меня есть четыре массива, мне нужно взять элементы в первом массиве и проверить, есть ли они во втором, третьем и четвертом элементах массива, если они существуют, мне нужно хранить в строковых переменных, как я могу это сделать

Что я уже пробовал:

Я не мог понять, как это сделать

1 Ответов

Рейтинг:
1

Thomas Daniels

Вы можете использовать метод LINQ Пересекаться[^] чтобы легко найти элементы в обоих массивах:

var inBothArr1AndArr2 = arr1.Intersect(arr2);
var inBothArr1AndArr3 = arr1.Intersect(arr3);
var inBothArr1AndArr4 = arr1.Intersect(arr4);
Теперь у вас их три IEnumerable<T>С. делайте с их содержимым то, что вам нужно.

[Редактировать]

Из вашего комментария следует, что вы хотите сделать это один за другим. Это тоже возможно:
for (int i = 0; i < arr1.Length; i++)
{
    if (arr2.Contains(arr1[i]))
    {
        // Array 2 contains this element. Index: i. Value: arr1[i]
    }
    // do the same for arr3 and arr4
}


Thomas Daniels

См. Мой редактировать.

kav@94

for (int i = 0; i < wavarr.Длина; i++)
{
если (basearr.Содержит(wavarr[i]))
{
/ Блок 2 содержит этот элемент. Индекс: i. значение: arr1[i]
}
// сделайте то же самое для arr3 и arr4
}

я сделал это, но это дает ниже ошибку

- Система.Массив' не содержит определение для 'содержит', а не метод расширения 'содержит', принимающий первый аргумент типа 'System.Массив' может быть найден (пропущена директива using или ссылка на сборку?) C:\Users\yaminik\Desktop\MT оригинал из сети с 208 db\mttraining\SubjectItems. aspx.cs 153 28 C:\...\mttraining\

Thomas Daniels

Добавь using System.Linq; в верхней части вашего досье.

Thomas Daniels

Если вы хотите сохранить несколько из этих переменных, вы можете создать List<string> и храните их там.

Thomas Daniels

В верхней части вашего файла: using System.Collections.Generic;

Перед вашим циклом for: List<string> list = new List<string>();

Внутри оператора " if " цикла: list.Add(arr1[i]);

После цикла for вы можете получить доступ к списку как к массиву.

kav@94

мой первый массив

"400005733. wav"
"400006813. wav"


мой второй массив

"400005733-b.doc"
"400006813-b.doc"

если мы увидим их 400005733. wav совпадает с 400005733-b.doc невзирая на возбуждения, но у меня есть -b, который должен быть удален, и это имя после удаления -b "400005733.doc" это должно быть сохранено в строковой переменной, как я могу это сделать

Thomas Daniels

В классе System. IO. Path есть метод GetFileNameWithoutExtension, который вы можете использовать.

Также вы можете использовать метод Replace для строки, чтобы удалить "- b", например yourString.Replace("-b", "");