8
votes

Définir des valeurs avec une requête LINQ?

Dans ma candidature, j'ai une liste d'éléments dont j'ai besoin pour trier par prix et définir un indice de rang / de position pour chaque élément. J'ai besoin de stocker le rang car le prix peut changer ensuite. Pour le moment, je le fais comme ceci:

var sortedlistKFZ = from res in listKFZ orderby res.Price select res;
if (sortedlistKFZ.Any())
{
     int rankPosition = 1;
     foreach (Result kfz in sortedlistKFZ)
     {
           kfz.MesaAdvertNumber = rankPosition;
           rankPosition++;
     }
}


0 commentaires

3 Réponses :


1
votes

Le plus simple serait

(from res in listKFZ orderby res.Price select res).ToList().ForEach(...)


0 commentaires

9
votes

Ce travail pourrait-il fonctionner? XXX


1 commentaires

Ce sera, à l'exception d'un petit détail ... La numérotation démarre à partir de 2. Vous avez besoin d'une augmentation d'incrémentement sur Postfix (RankPosition ++) ou une valeur initiale de la sectionPosition à 0.



3
votes

Vous pouvez le faire à l'aide du mot clé code> code>. Cela devrait fonctionner ...

Int32[] numbers = new Int32[] { 3, 6, 4, 7, 2, 8, 9, 1, 2, 9, 4 };

int count = 1;
var ranked = 
    from n in numbers
    let x = count++
    select new {
        Rank = x,
        Number = n
    };


0 commentaires