Bonjour,
J'ai une fonction qui recherche l'indice des doublons présent dans une colonne d'un gridview.
Avec des données de 58000 lignes, ca me prends beaucoup de temps pour faire la recherche (plus de 3min). J'ai regardé quelques pistes pour essayer de résoudre la perfomance comme l'utilisation de la requete linq dans une collection pour récupérer la valeur en double avant de trouver les indices des doublons. Cet approche présente un problème car on accède pas à la collection de données directement avec la colonne comme c'est le cas avec une ligne.
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
24
25
26
27
28
29
30 Dictionary<string, List<int>> repetitionValue = new Dictionary<string, List<int>>(); List<int> listValue = new List<int>(); List<string> key = new List<string>(); for (int i = 0; i < gridView1.RowCount; i++) { //on traite les lignes autres que les lignes des ID, Name, description 1, description 2 if (!indexRow.Values.Contains(i)) { if (!key.Contains(gridView1.GetDataRow(i)[nameCol].ToString())) { key.Add(gridView1.GetDataRow(i)[nameCol].ToString()); #region vérifier les doublons dans l'index for (int j = i + 1; j < gridView1.RowCount; j++) { if (gridView1.GetDataRow(i)[nameCol].ToString().Equals(gridView1.GetDataRow(j)[nameCol].ToString())) { listValue.Add(j); } } if (listValue.Count > 0) { repetitionValue.Add(gridView1.GetDataRow(i)[nameCol].ToString(), new List<int>(listValue)); listValue.Clear(); } #endregion } } } return repetitionValue;
Y a t-il un moyen plus efficace pour améliorer la recherche des indices?
merci pour votre aide
Partager