BindingList с источником данных IList <T>, порядком элементов - PullRequest
2 голосов
/ 17 марта 2011

Можно ли предположить, что порядок элементов из IList<T> остается одинаковым, когда я использую его как DataSource из BindingSource (Windows Forms), так что BindingSource.Positionи List.IndexOf() эквивалентны для одного и того же объекта?

Это важно для меня, поскольку Find не поддерживается в списках, которые не BindingList, поэтому я использую простой старый метод IList.IndexOf дляопределить положение элемента:

myBindingSource.Position = myItemList.IndexOf(myItem);

Видимо, это работает нормально.Но я не знаю, смогу ли я еще выяснить, могу ли я на самом деле рассчитывать на это, чтобы работать.Я немного волнуюсь, потому что свойство BindingList List копирует данные в новые структуры списка (см. Примечания DataSource) ...

Cheers,Matthias

1 Ответ

1 голос
/ 17 марта 2011

Да, IList<T> должен всегда сохранять один и тот же порядок. Это шаг за пределы IEnumerable<T> (с точки зрения дополнительной функциональности), который не гарантирует порядок, а только возможность перечисления по коллекции. IList<T> добавляет индексирование для поддержки большего количества функций, таких как .IndexOf() и .RemoveAt(), которые требуют индексации.

Теперь, если источник данных, из которого вы заполняете IList<T>, возвращает элементы в том же порядке, это уже другая история.

...