2012-05-20 3 views
1

Поскольку ListCollectionView не поддерживает индексатор (ex View [0]), единственный способ, которым я нашел повторение по фильтрованному/отсортированному списку, - использовать foreach.Итерация через ListCollectionView с использованием foreach

1) Будет ли foreach следить за тем, чтобы порядок элементов в поле зрения сохранялся во время итерации? если нет, то какая альтернатива?

2) Существует ли строго типизированное ListCollectionView? Я Опоздание методы расширения много Linq, и имея много FindMaxThis, FindFirstThat ... :)

+0

только логически кажется, что итерация сохраняет заказ, иначе можно получить разные результаты, просто потому, что это n-й раз итерации. Итерация не может быть генератором случайных результатов. – radarbob

+0

Ну, я помню, как только я прочитал об этом, и ответ был: зависит от коллекции, которую она итерирует ... Если вы посмотрите на SO, вы увидите, что там, где подобные вопросы об этом. В любом случае, список сохранит заказ точно, и я все время использую List , поэтому я в безопасности – Goran

ответ

1

1) При использовании Еогеаспа с ListCollectionView вы, вероятно, получите Enumerator из базовой коллекции (InternalList собственности). Если вы инициализируете его экземпляром List <>, тогда вы можете быть уверены, что перечисление будет в порядке.

2) Для этого есть два варианта. Сначала вы можете использовать внутренний список и либо передать его в строго типизированную коллекцию, либо сохранить ссылку на нее где-нибудь в своем классе. Во-вторых, следует использовать Листинг <> непосредственно в экземпляре ListCollectionView. Для высокопроизводительных приложений я бы выбрал первый подход.

var collection = new ListCollectionView(new List<int>()); 
var even = collection 
    .Cast<int>() 
    .Where(n => n%2 == 0); 
+0

Привет, как и для числа 2), я не могу использовать свойство SourceCollection (внутренний список), поскольку он содержит все элементы, не отфильтрованный/отсортированный. Это создало бы разные результаты от ожидаемых. И так как Cast <> call создавал бы каждый раз новую перечислимую коллекцию, это создавало бы плохую производительность. Я не уверен, почему в wppf нет строго типизированного редактируемого вида коллекции. – Goran

Смежные вопросы