У меня есть список предметов, который имеет свойство (ProductNames), которое является IEnumberable<string>
. Как я могу отфильтровать этот список в свойстве, чтобы получить только список, в котором элемент соответствует всем элементам в другом IEnumerable<string>
(FilterProductNames)?Элементы фильтра, основанные на IEnumerable <string>
Я попытался следующие, но это, кажется, возвращает все элементы, которые соответствуют ничего (спичке стиль OR) в пределах фильтра IEnumberable:
Items.Where(x => x.ProductNames.Intersect(FilterProductNames).Any())
UPDATE
Я пытался использовать Тима ответьте ниже, но мне кажется, что я дал пустой набор, поэтому я попробовал только один элемент в FilterProductNames, но это все еще просто ничего мне не дало, поэтому я протестировал один и тот же фильтр, выполнив следующие действия:
if (count == 1)
{
// this will return me 4 items
Items = Items.Where(x => x.ProductNames.Contains(FilterProductNames.First()));
}
else
{
// when I remove the above if, this will return me 0 items filtering on the same thing
Items = Items.Where(x => x.ProductNames.All(pn => FilterProductNames.Contains(pn)));
// have also tried the other version on tim's answer but to no avail:
// Items = Items.Where(x => !x.ProductNames.Except(FilterProductNames).Any());
}
UPDATE 2
Извините за плохой формулировки, которая вызвала некоторое замешательство, я после того, как элементы, которые содержат все имена в FilterProductNames, но не ограничиваются только пункты в FilterProductNames так, например, если при поиске для элементов, имеющих названия продуктов Test и Test1, он должен вернуть любой элемент, содержащий как эти имена, так и любое другое имя.
Возможно ли это?
Привет Я просто попробовали оба этих варианта, но оба они возвращают мне пустой набор – Pete
@Pete: я протестировал его с простыми примерными данными, и он работал, как ожидалось. Так что в твоих руках должно быть что-то особенное. Измените свой вопрос и покажите короткий пример, который показывает это неправильное поведение. В противном случае мы могли бы просто догадаться (случай, орфография, пробелы, 'null' и т. Д.) –
Привет, я добавил примеры того, что работает, а что нет, сообщите мне, если вам нужно больше информации – Pete