Since ListCollectionView doesn’t support indexer (ex View[0]), the only way I found to iterate through filtered/sorted list is to use foreach.
1) Will foreach make sure that order of items in view is preserved during iteration? if not, what is the alternative?
2) Is there a strongly typed ListCollectionView? I am missing a lot linq extension methods, and having lots of FindMaxThis, FindFirstThat… 🙂
1) When you use foreach with ListCollectionView you will probably get an Enumerator from the underlying collection (InternalList property). If you initialize it with an instance of List<> then you can be pretty sure that the enumeration will be in order.
2) There are two options to do it. First you can use the internal list and either cast it to a strongly typed collection or store the reference to it somewhere in your class. Second is to use Cast<> directly on the ListCollectionView instance. For performance critical apps I would choose the first approach.