Auto-increment ist eine generische Liste mit LINQ in C#
Ist es ein guter Weg, um ein "auto-increment" Stil index-Spalte (von 1..x) bei der Projektion von Elementen mithilfe von LINQ?
Als ein einfaches Beispiel, ich bin auf der Suche nach der index-Spalte unten, um zu gehen von 1 bis zur Anzahl der Elemente in Liste.
var items = from s1 in list
select new BrowsingSessionItemModel { Id = s1.Id, Index = 0 };
Iteration durch die Liste wäre die einfache option, aber ich Frage mich, ob es einen besseren Weg, dies zu tun?
- Im Allgemeinen erzeugen Sie eine neue Inkrementierung von enumerable mit Enumerable.Range(1, numOfItems), aber in deinem Fall, mit dem Select-überlastung ist die bessere option für Ihre Bedürfnisse.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht mit LINQ-Ausdrücke. Könnten Sie die folgenden
.Wählen Sie aus
Erweiterung Methode obwohl:Index = index + 1
.Können Sie die überlastung der
Select
was bringt das stellt den index für die Projektion als auch:Beachten Sie, dass es keine query-expression-Unterstützung für diese überlastung. Wenn Sie tatsächlich abrufen der Werte aus einer Datenbank (es ist nicht klar, ob
list
ist wirklich einList<T>
), sollten Sie sich wahrscheinlich stellen Sie sicher, Sie haben eine entsprechende Bestellung, da sonst die Ergebnisse sind etwas willkürlich.