Entwickler-Ecke

Basistechnologien - List<T> filtern mit lambda expression


daeve - Sa 10.12.11 16:18
Titel: List<T> filtern mit lambda expression
Hallo zusammen

ich habe eine List die ich mit einer BindingSource mit einem DGV verbunden habe.

Jetzt sollen Daten gefiltert werden können, das filtern funktioniert soweit aber wenn ich dann wärend dem
Filtern Daten bearbeite im DGV, kann ich diese nicht abspeichern, beziehungsweise wird die List nicht aktualisiert.

so lade ich das DGV

C#-Quelltext
1:
2:
3:
4:
5:
6:
private void FillDataGridView()
        {
            bs.DataSource = BookList;
            dgvBook.DataSource = bs;
                         
        }


so filtere ich die Daten:

C#-Quelltext
1:
bs.DataSource = BookList.Where(x => x.Price > 10).ToList();                    


und die BookList wird so nicht mehr aktualisiert.

wie könnte ich das lösen ?


Ralf Jansen - Sa 10.12.11 18:34

Zitat:
und die BookList wird so nicht mehr aktualisiert.


Weil du BookList nicht an das DataGridView gebunden hast sondern die Liste die aus ToList() rauskommt und diese wird sicherlich aktualisiert.

Es gibt mehrere Möglichkeiten das zu lösen zum Beispiel

1. BookList binden und das Filtern über die BindingSource lösen der Listentyp von BookList muss dann Filtern unterstützen (Stichwort IBindingListView Interface)
2. So wie bisher aber die tatsächlich gebunden Liste merken und nach dem Bearbeiten diese Liste in BookList zurückmergen.
3. ....


daeve - Sa 10.12.11 20:49

okey, danke !

ich habe das ganze jetzt mit einer DataTable gelöst.