Bonjour,
Actuellement je suis sur un projet ou je dois comparer des versions logicielles référencées dans un fichier csv.
Il se trouve qu'en fonction de certains paramètres les patterns sont les mêmes, c'est à dire que remplie à partir de mon csv un tableau 2D, ensuite j'aimerais vérifier dans le tableau que certaines cases sont vides.

Voici mon 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
47
48
49
string l3 = "3,4,5,6,7,8,9,10,11,12,13,14";
                string l4 = "3,4,13,14";
                string l5 = "1, 3,4,5,6,7,8,9,10,11,12,13,14,16";
                string l6 = "1,3,4,5,6,7,8,9,10,11,12,13,14,16";
                string l7 = "2,3,4,5,6,7,8,9,10,11,12,13,14,15 ";
                string l8 = "3,4,5,6,7,8,9,10,11,12,13,14";
                string l9 = "3,4,5,6,7,8,9,10,11,12,13,14";
                string l10 = "1,2,5,6,7,8,9,10,11,12,15,16";
                string l11 = "1,2,3,4,13,14,15,16";
                string l12 = "1,2,3,4,13,14,15,16";
                string l13 = "1,2,3,4,13,14,15,16";
 
                List<string> Ligne3 = l3.Split(',').ToList();
                List<string> Ligne4 = l4.Split(',').ToList();
                List<string> Ligne5 = l5.Split(',').ToList();
                List<string> Ligne6 = l6.Split(',').ToList();
                List<string> Ligne7 = l7.Split(',').ToList();
                List<string> Ligne8 = l8.Split(',').ToList();
                List<string> Ligne9= l9.Split(',').ToList();
                List<string> Ligne10= l10.Split(',').ToList();
                List<string> Ligne11= l11.Split(',').ToList();
                List<string> Ligne12 = l12.Split(',').ToList();
                List<string> Ligne13 = l13.Split(',').ToList();
 
                foreach (string x in Ligne3)
                {
                    int number = int.Parse(x);
                    if (feuilleVersion.GetRow(3).GetCell(number) != null)
                    {
                        return false;
                    }
                }
                foreach (string x in Ligne4)
                {
                    int number = int.Parse(x);
                    if (feuilleVersion.GetRow(4).GetCell(number) != null)
                    {
                        return false;
                    }
                }
                foreach (string x in Ligne5)
                {
                    int number = int.Parse(x);
                    if (feuilleVersion.GetRow(5).GetCell(number) != null)
                    {
                        return false;
                    }
 
                }
Je n'ai pas mis tous les foreach vous avez compris ma logique....

Ma question y aurait il une autre méthode plus optimisée ?

Merci d'avance pour vos réponses.
Bonne journée.

EDIT: Pour résoudre mon "problème" j'essaye de faire une liste de liste qui contiendrais les listes de lignes.
Seul problème je n'arrive pas a parcourir ma liste de liste, et même si j'y arrivais j'aurais un prolème pour renseigner la ligne sur laquelle j'opère.

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
 
                 List<List<string>> listGlobal = new List<List<string>>();
                 List<string> Ligne3 = l3.Split(',').ToList();
                listGlobal.Add(Ligne3);
                List<string> Ligne4 = l4.Split(',').ToList();
                listGlobal.Add(Ligne4);
                List<string> Ligne5 = l5.Split(',').ToList();
                listGlobal.Add(Ligne5);
                List<string> Ligne6 = l6.Split(',').ToList();
                listGlobal.Add(Ligne6);
                List<string> Ligne7 = l7.Split(',').ToList();
                listGlobal.Add(Ligne7);
                List<string> Ligne8 = l8.Split(',').ToList();
                listGlobal.Add(Ligne8);
                List<string> Ligne9= l9.Split(',').ToList();
                listGlobal.Add(Ligne9);
                List<string> Ligne10= l10.Split(',').ToList();
                listGlobal.Add(Ligne10);
                List<string> Ligne11= l11.Split(',').ToList();
                listGlobal.Add(Ligne11);
                List<string> Ligne12 = l12.Split(',').ToList();
                listGlobal.Add(Ligne12);
                List<string> Ligne13 = l13.Split(',').ToList();
                listGlobal.Add(Ligne13);
 
 
                foreach (string x in listGlobal)
                {
// Je voudrais faire la même manip que le code d'en haut, c'est à dire prendre chaque liste dans ma liste de liste, la splitter et regarder dans la ligne (Row) correspondant à la liste si les cellules sont vides.
                    int number = int.Parse(x);
                    if (feuilleVersion.GetRow(3).GetCell(number) != null)
                    {
                        return false;
                    }
                }
Voila je continus de chercher.

2ème EDIT:

J'ai réussi à parcourir ma liste dans ma liste comme ça tout se passe bien, j'ai trouvé la solution.
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
 foreach (List<string> x in listGlobal)
                {
 
                    foreach (string str in x)
                    {
 
                        int number = int.Parse(str);
                        string tmp = feuilleVersion.GetRow(row).GetCell(number).ToString();
                        if (tmp != "")
                        {
                            return false;
                        }
 
                    }
row++
 
                }
Si quelqu'un est dans la même impasse que moi et ne sait pas parcourir une liste de liste, il faut simplement faire deux foreach, un qui parcourt la Liste de Liste et une autre qui parcours la Liste actuellement parcourue par le premier foreach.

Voili voilou bonne journée.