У меня есть небольшая проблема.List.Contains не возвращает true, когда существует элемент
У меня есть список массивов int, содержащих идентификатор (любое число) и граф (который может быть чем угодно от 0 до 5), который имеет имя playerWordList
и второй список с идентификаторами только с именем words
. То, что я пытаюсь сделать, - это функция, которая проверяет, присутствует ли каждый идентификатор из второго списка в первом (граф не имеет значения), а если его нет, добавьте элемент с этим отсутствующим идентификатором и количеством, равным 0.
На данный момент у меня есть обходное решение, которое представляет собой двойной цикл, который для каждого элемента во втором списке выполняет итерацию через каждый элемент в первом списке, который ищет совпадение, но я вижу, что существует метод List.Contains
, который бы идеально соответствовал моей проблеме но он просто не работает должным образом.
Я прочитал несколько тем об этом, но в основном они сосредоточены на сравнении двух элементов пользовательского класса, которые требуют переопределения Equals
и GetHashCode
, но я не знаю, относится ли это к моей проблеме каким-либо образом и если это так, то я понятия не имею, как я могу переопределить Equals
и GetHashCode
для массивов int.
Вот мой код:
foreach (var word in unit.words)
{
int[] ex1 = new int[2] { word.id, 0 };
int[] ex2 = new int[2] { word.id, 1 };
int[] ex3 = new int[2] { word.id, 2 };
int[] ex4 = new int[2] { word.id, 3 };
int[] ex5 = new int[2] { word.id, 4 };
int[] ex6 = new int[2] { word.id, 5 };
if (playerWordList.Contains(ex1) ||
playerWordList.Contains(ex2) ||
playerWordList.Contains(ex3) ||
playerWordList.Contains(ex4) ||
playerWordList.Contains(ex5) ||
playerWordList.Contains(ex6)) break;
else
{
int[] newWord = new int[2] { word.id, 0 };
playerWordList.Add(newWord);
}
}
Что это за "x => x.SequenceEqual (ex1)" thingy? Я вижу это очень часто, но я не могу его искать, потому что только в нем есть стрелка и кажется полезным –
SequenceEqual проверяет, имеют ли две последовательности одинаковые элементы в том же порядке. –
Хорошо, но я спрашивал об этом «=>». Это LINQ? –