Bonjour à tous,
J'ai un objet contenant une DataRowCollection nommé Rows.
J'ai un problème de performance lorsque j'ai un très gros nombre de ligne à insérer dans cet objet (60000).
J'ai pu me rendre compte en mettant une trace dès que 500 nouvelles lignes ont été ajoutées, que plus on est loin dans la boucle, plus l'intervalle de temps est grand pour insérer 500 nouvelles lignes. Je pense donc que le problème de performance vient du fait que la DataRowCollection recopie à chaque fois toutes ses entrées (DataRow) pour agrandir sa taille.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 //DataGridView améliorée public class MaGrille { //........ public void BindWithDataTable(DataTable maTable) { DataRow row; foreach(DataRow rowSource in maTable.Rows) { //obtient une ligne au format de la grille row = this.NewRow(); //n'insère que des lignes vides pour le moment this.Rows.Add(row); } } //........ }
C'est pourquoi je cherche un moyen de définir la taille de ma DataRowCollection avant d'y insérer des lignes (que je connaît avant évidemment). Une sorte de Redim Preverse mais en C# et pour une DataRowCollection.
Si vous avez des pistes je suis preneur. Merci d'avance
Partager