!WordList.Any(x => x.Contains(value))
вернет true
, если ни один элемент в WordList
не содержит value
и false
, если есть хотя бы один элемент в WordList
, содержащий value
.
Итак ваш код вернет массив элементов listToTest
, который ни один элемент в WordList
не содержит их, но, как вы сказали, вам нужен массив элементов listToTest
, который не содержит элемента WordList
. Так что в ... x.Contains(value)))
замените x
и value
друг на друга:
private static string[] WordList = { "Example No", "Name", "Client ID"};
var listToTest = new[] { "ME 0.3", "Example No.: 1243", "Name.:"};
var newList= new List<string>();
foreach (var value in listToTest)
{
if (!WordList.Any(x => value.Contains(x)))
{
newList.Add(value);
}
}
return newList.ToArray();
Кстати есть более аккуратный способ:
var result = listToTest.Where(x => !WordList.Any(y => x.Contains(y))).ToArray();
// Usage:
foreach (var s in result)
Console.WriteLine(s);
// Output:
// ME 0.3
Описание:
Enumerable.Where
Метод: фильтрует последовательность значений на основе предиката. Enumerable.Any
Метод: определяет, есть ли какой-либо элемент последовательности существует или удовлетворяет условию. Enumerable.ToArray
Метод: создает массив из IEnumerable. String.Contains(String)
Метод: возвращает значение указывает, встречается ли указанная подстрока в этой строке.