Подтвердить что ты не робот

Получать отфильтрованные элементы из CollectionView

У меня есть ListCollectionView, на который был применен фильтр. Чтобы получить отфильтрованные элементы из списка (например, для записи в файл), существует ли чистый способ сделать это.

Мое текущее решение

var filteredItems = originalCollection.Where(i => view.Filter(i));

В коде я проверяю нули на originalCollection и view.Filter.

Есть ли более чистый способ сделать это?

4b9b3361

Ответ 1

Метод GetEnumerator учитывает фильтр, поэтому вы можете просто foreach по представлению:

ICollectionView view = ...
view.Filter = ...

foreach(Foo o in view)
{
    ...
}

(предполагая, что объекты в исходной коллекции имеют тип Foo).

Вы также можете использовать метод расширения Cast:

var filteredItems = view.Cast<Foo>();