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).

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);
}
}
 
//........
 
}
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.

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