Erhalte jedes Ergebnis, das von foreach
zurückgegeben wird.
Sehen Sie sich das folgende Razor-Code-Fragment an:
%Vor%Die Rückkehr zum Kunden ist:
Xbox 360
Xbox 360
Xbox 360
Xbox 360
Playstation 3
Playstation 3
Playstation 3
Nun, lassen Sie mich erklären: Meine Anwendung vergleicht den Preis von Produkten in verschiedenen Geschäften. In meinem Fall gibt es Xbox 360 in vier Geschäften, während Playstation 3 in drei Geschäften existiert - deshalb wiederholen sich ihre Namen.
Was ich will, ist einfach: Holen Sie sich den Namen jedes Produkts nur einmal, um die Tabellenspalte einer HTML-Tabelle zu füllen - können Sie alle verstehen?
Jedes Produkt wird in der Sitzung hinzugefügt. In unserem Fall gibt es zwei Produkte in der Sitzung - das erste ist Xbox 360
und das zweite ist Playstation 3
. Wie du sehen kannst, kann ich Session verwenden, um mit diesem zu arbeiten ("für jedes Element in der Session, tu etwas ...") , aber ich denke, dass es nicht notwendig ist, weil ich es immer tun werde Ich muss eine Abfrage in der Datenbank ausführen und logischerweise gibt sie mir das zurück, was ich brauche. Mit anderen Worten: Ich muss die Sitzung nicht verwenden, außer um die Daten, die die Benutzer benötigen, vorübergehend zu speichern.
Das Model.Collection.Products
hat den Typ List<Products>
.
In etwa so:
%Vor% Aber, natürlich, erfolglos. Im Grunde brauche ich etwas wie FirstOfEach()
.
Die Lösung
Verwenden Sie eine GroupBy
...
A GroupBy
gibt IEnumerable<IGrouping<TKey, TSource>>
zurück, wobei die Eigenschaft Key
den Wert der Eigenschaft darstellt, nach der Sie gruppieren (in diesem Fall: name
)
Andere Vorteile
Der Vorteil dieses Ansatzes besteht darin, dass Sie auch auf die Elemente für jede Gruppe zugreifen können. Wenn Sie beispielsweise die verschiedenen Preise für jede Gruppe auflisten möchten, können Sie beispielsweise Folgendes tun:
%Vor%(Ich weiß, das ist nicht das beste HTML, es ist nur ein Beispiel für die Verwendung!)
Ähnlich wie GroupBy können Sie Ihre Liste auch in Lookup
konvertieren %Vor%Tags und Links c# asp.net-mvc-4