L'Auto-incrémentation d'une liste générique à l'aide de LINQ en C#
Est-il un bon moyen de fournir une "auto-increment" style de colonne d'index (à partir de 1..x) lors de la projection des éléments à l'aide de LINQ?
Comme un exemple de base, je suis à la recherche de la colonne d'index ci-dessous pour aller de 1 au nombre d'éléments dans la liste.
var items = from s1 in list
select new BrowsingSessionItemModel { Id = s1.Id, Index = 0 };
Parcourant la liste serait la solution la plus simple, mais je me demandais si il y avait une meilleure façon de le faire?
En général, vous pouvez générer une nouvelle incrémentation énumérable à l'aide de l'Énumération.Range(1, numOfItems), mais dans votre cas, Sélectionnez à l'aide de la surcharge est la meilleure option pour vos besoins.
OriginalL'auteur Nick | 2011-10-14
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire cela avec des expressions LINQ. Vous pouvez utiliser les éléments suivants
.Sélectionnez
méthode d'extension:Quel serait le moyen le plus efficace pour commencer à partir de 1, au lieu de 0?
Index = index + 1
.Je devrais l'avoir essayé que le premier! Je pensais qu'il pouvait avoir été un moyen pour définir la valeur de départ identité. Merci encore Darin.
OriginalL'auteur Darin Dimitrov
Vous pouvez utiliser le la surcharge de
Select
qui prend le fournit l'indice de la projection ainsi:Noter qu'il n'existe pas d'expression de requête de soutien à cette surcharge. Si vous êtes en train de chercher les valeurs à partir d'une base de données (il n'est pas clair si
list
est vraiment unList<T>
), vous devriez probablement assurez-vous de disposer d'une commande, sinon les résultats sont quelque peu arbitraires.OriginalL'auteur Jon Skeet