У меня есть следующий запрос LINQ, который обрабатывает строку, и я хочу изменить ее для работы с массивом. Как мне это сделать?Запрос LINQ, чтобы проверить, содержит ли массив поисковый запрос
Это запрос LINQ на данный момент (где FilteredString
- это строка). Он отлично работает:
var xFiltered = Services.Where(x =>
x.Name.ToUpper().Contains(xFilteredString.ToUpper() ||
x.Hosts.Select(y => y.Name)
.Any(y => y.ToUpper().Contains(xFilteredString.ToUpper()))));
Однако, я изо всех сил, чтобы заставить его работать в этом случае (следующий код не работает), где я проверяю, если массив содержит определенное значение:
var xFilteredArray = xFilteredString.Split(',')
var xFilteredArrayToUpper = xFilteredArray.Select(s => s.ToUpperInvariant());
var xFiltered = Services(Where x =>
x.Name.ToUpper().Any(y => xFilteredArrayToUpper.All(x.Name.Contains) ||
x.Hosts.Select(y => y.Name)
.Any(y => y.ToUpper().Contains(xFilteredArrayToUpper.All(x.Name.Contains)))));
Как это исправить?
В этот момент во втором кодовом блоке: 'x.Hosts.Select (y => y.Name). Любой (y => y.ToUpper()' вы хотите см., если 'xFilteredArrayToUpper' содержит' y.ToUpper() '? – Gavin
Нет, я пытался сделать его заглавным – methuselah
Я имею в виду, когда вы вызываете' y.ToUpper() '.. Я оставил остальную часть, потому что это неправильно и неясно, что вы хотите, чтобы вы получили имена хостов, .ToUpper() 'их, а затем что? – Gavin