Получать отфильтрованные элементы из CollectionView
У меня есть ListCollectionView
, на который был применен фильтр. Чтобы получить отфильтрованные элементы из списка (например, для записи в файл), существует ли чистый способ сделать это.
Мое текущее решение
var filteredItems = originalCollection.Where(i => view.Filter(i));
В коде я проверяю нули на originalCollection
и view.Filter
.
Есть ли более чистый способ сделать это?
Ответы
Ответ 1
Метод GetEnumerator
учитывает фильтр, поэтому вы можете просто foreach
по представлению:
ICollectionView view = ...
view.Filter = ...
foreach(Foo o in view)
{
...
}
(предполагая, что объекты в исходной коллекции имеют тип Foo
).
Вы также можете использовать метод расширения Cast
:
var filteredItems = view.Cast<Foo>();