Bonjour,

Si personne n'a de réponse a cette question, je vais en perdre le someil !

Voici une requete Linq tout a fait fonctionelle. La seul valeur interessante ici est "Instance".
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
 
 var list = (from s in Context.GP_VisiteNames
          where s.VN_IsSpetial == false
          where s.VN_OutOfDate == null
          select new VisitCreatorViewModel()
          {
             DateStart = new CalendarViewModel() { Date = DateTime.Now, Instance = 0 }, // <=== ICI
             RameId = 0,
             RameName = new AutocompleteStringViewModel() { Value = null },
             VisitName = s.VN_Name,
             Visit = new DropDownListViewModel()
             {
                DropDownOptions = (from t in Context.GP_VisiteNames
                                   where t.VN_OutOfDate == null
                                   select new DropDownOption()
                                   {
                                      Value = t.VN_ID,
                                      Label = t.VN_Name
                                   }).ToList()
             }
          }).ToList();
Je souhaites incrementer le champ instance. Ne pouvant pas/n'ayant pas trouvé le moyen de la faire dans la requete, Je le fais en dehors.

Une fois la requete effectuée, j'ai une liste contenant 15 VisitCreatorViewModel, chaqun contient un CalendarViewModel ayant un champ public int Instance.

Voici comment j'ai voulu incrémenter les Instances et vous constaterez que peu a peu la follie s'empare de moi. Car a la fin de chaque boucle, TOUTES oui TOUTES les valeurs d'Instance valent 14.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
//1
for (int i = 0; i < list.Count; ++i)
   list[i].DateStart.Instance = i;
//2
int i = 0;
foreach (var item in list)
   item.DateStart.Instance = ++i;
//3
for (int i = 0; i < list.Count; ++i)
   if (i > 0)
      list[i].DateStart.Instance = list[i - 1].DateStart.Instance + 1;
Ca me rends fou. On ne peut pas faire une simple incrementation en C# ?
Pourquoi est-ce tout le temps une référence qui est passé par l'opérateur "=" ?

Merci pour toute aide !