Filtrer datatable avec linq - C#/.NET managed - Programmation
Marsh Posté le 10-12-2014 à 12:32:07
Je créerais un IEnumerable<DataRow> que j'utiliserais pour filtrer / recopier
Dans ton code, tu filtres "dans le vide", puisque tu ne fais rien des données filtrées (dt.AsEnumerable().Where.... n'a aucun impact sur dt).
Code :
|
Pour ton message "collection was modified", ça sent le foreach avec des suppressions d'éléments... Mais je ne vois pas ça dans le code que tu donnes, donc difficle à dire.
Marsh Posté le 10-12-2014 à 21:26:01
De mémoire :
- CopyToDataTable() est sensé fonctionner, je ne vois pas pourquoi tu rencontres cette erreur, ça vaut le coup de creuser un peu je pense.
- Sinon, si c'est pour de l'affichage, utilise un DataView qui te propose d'écrire des filtres en quasi-SQL.
Code :
|
Cette classe peut être bindée à la plupart des contrôles genre datagrid, etc
- En .Net 3.5 tu as aussi des trucs intéressants dans DataTableExtensions.
Bon courage !! (je déteste les datatables et tout ce qui s'y rapporte, j'espère ne plus jamais en revoir).
Marsh Posté le 11-12-2014 à 01:36:00
deliriumtremens a écrit : Je créerais un IEnumerable<DataRow> que j'utiliserais pour filtrer / recopier
|
Avec ce code :
Code :
|
J'ai toujours la liste complète des résultats, on dirait qu'il ne tient pas compte du filtre.
TotalRecall a écrit : De mémoire :
|
Je voudrais jouer un peu avec linq donc j'essaie de faire fonctionner le code plutot que d'utiliser un dataview.
Marsh Posté le 11-12-2014 à 07:36:39
Ben oui.
Tu copies ton datatable source dans la destination :
Code :
|
Ce qui copie structure ET données !
Donc... essaie de créer la deuxième dataTable simplement avec CopyToDataTable, comme dans le code que j'ai montré
Code :
|
Marsh Posté le 10-12-2014 à 04:39:14
Bonjour,
j'ai une datatable avec une liste de clients que je veux filtrer donc je fais ceci
Seulement dt n'est pas filtré et si j'appelle la methode CopyToDataTable pour copier le résultat dans une autre datatable j'ai un message Collection was modified; enumeration operation might not execute.
Vous pouvez m'expliquer ce que je fais mal ?
---------------
Instagram - Mon PVT en Australie.