С#: Каков наилучший способ реализации механизма "фильтра" для элементов ListView?
Я хочу отфильтровать некоторые элементы списка из представления в режиме "подробности", где он содержит строки и столбцы. Какой был бы лучший вариант для создания такого механизма, когда я мог бы быстро удалить рассматриваемые объекты из представления, оставив остальных неповрежденными и вернув их в список, когда больше нет необходимости отфильтровывать элементы списка? Должен ли я удалять/копировать их в список и просто добавлять их обратно, когда это было сделано, или был бы лучший способ сделать это более эффективно? Список будет обрабатывать около 100-500 элементов.
Если вы работаете с элементом управления базой данных, у вас будет этот объект в рамках привязки.
Если нет, я бы, вероятно, сохранил все элементы для списка отдельно и каждый раз заполнял элемент управления на основе любых контекстуальных требований, таких как фильтрация. Код для итерации по списку и перемещения элементов, которые не требуются в настоящее время, вероятно, излишне сложны. Полное повторение каждого времени будет проще и не будет сильно отличаться с точки зрения затрат на вычисления.
Это поведение встроено в BindingSources, используя DataSets в .Net 2.0.
Для .Net 3.0+ вы можете использовать LINQ.