Bonjour à tous
Dans mon projet j'ai un DataSet, parmis les datatables de ma DataSet j'ai un datatable intitulé Vols et un DataTable nommé Recette les deux datatables contiennent en moyenne 4000 enregistrements .
dans la partial class de ma dataset j'ai une méthode nommée ControlRecette()
l'exécution de cette méthode est très lente (affaire d'heures !)
dans cette méthode je parcoure la datatable Recette et de chercher le vol concerné dans la datatable Vols dans le cas où je trouve ce vol je lui affecte sa recette sinon je lui attribut un status de False.
quelqu'un peut m'aider dans le but d'optimiser ce code
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 public void ControlRecette() { this.Recette.RowChanged -= new DataRowChangeEventHandler(Recette_RowChanged); try { foreach (RecetteRow MyRecetteRow in this.Recette) { if (this.AnomaliesRef.Rows.Count > 0) Correcte_Villes(MyRecetteRow); VOLSRow[] FoundsRows = (VOLSRow[])this.VOLS.Select("nligne='" + MyRecetteRow.Nligne + "' and date_d='" + MyRecetteRow.Date_D + "' and ville_d='" + MyRecetteRow.Ville_D + "' and ville_r='" + MyRecetteRow.Ville_R + "'"); if (FoundsRows.Length > 0) { MyRecetteRow.Status = true; MyRecetteRow.Code_Vol = FoundsRows[0].CODE; MyRecetteRow.Diff_Tot_Pax = Math.Abs(Convert.ToInt32(FoundsRows[0].TOT_PAX - MyRecetteRow.ToT_PAX)); FoundsRows[0].Status = true; if (!MyRecetteRow.IsRecette_MslfNull()) FoundsRows[0].Recette_Mslf = MyRecetteRow.Recette_Mslf; if (!MyRecetteRow.IsRecette_InterLineNull()) FoundsRows[0].Recette_InterLine = MyRecetteRow.Recette_InterLine; if (!MyRecetteRow.IsRecette_CharterNull()) FoundsRows[0].Recette_Charter = MyRecetteRow.Recette_Charter; if (!MyRecetteRow.IsRecetteNull()) FoundsRows[0].Recette = MyRecetteRow.Recette; FoundsRows[0].Diff_Tot_Pax = Math.Abs(Convert.ToInt32(FoundsRows[0].TOT_PAX - MyRecetteRow.ToT_PAX)); } else { MyRecetteRow.Status = false; MyRecetteRow.RowError = "Vol non trouvé dans TunStat"; } } VOLSRow[] UncheckedVolsFoundsRows = (VOLSRow[])this.VOLS.Select("state=false"); foreach (VOLSRow MyVolRow in UncheckedVolsFoundsRows) { MyVolRow.Status = false; MyVolRow.RowError = "Vol non trouvé dans Recette database"; } } finally { this.Recette.RowChanged += new DataRowChangeEventHandler(Recette_RowChanged); } }
Partager