Wie gruppiere ich in drei Gruppen mit LINQ für c #

Ich habe "Rechnungs" -Objekte mit einer Eigenschaft Preis . Hier sind meine Daten:

Invoice[] arrayOfInvoices = new Invoice[] {     
                new Invoice(83,"Electric Sander",7,57.98m)
            ,   new Invoice(24,"Power Saw",18,99.99m)
            ,   new Invoice(7,"Sledge hammer",11,21.50m)
            ,   new Invoice(77,"Hammer", 76, 11.99m)
            ,   new Invoice(39,"Lawn mower", 3, 79.50m)
            ,   new Invoice(68,"Screwdriver", 106, 6.99m)
            ,   new Invoice(56,"Jig saw", 21, 11.00m)
            ,   new Invoice(3,"Wrench", 34, 7.50m)};

Ich versuche, Rechnungen in drei Gruppen zu gruppieren - Rechnungen mit einem Stückpreis unter 10, Rechnungen mit Stückpreis zwischen 10 und 20 und Rechnungen mit einem Stückpreis von über 20. Wissen Sie, wie kann ich das tun?

0
Sicher wäre es einfacher, die Kommas ganz hinten anzusetzen.
hinzugefügt der Autor Jeroen Vannevel, Quelle

1 Antworten

Ich würde einfach den bedingten Operator verwenden, um eine switch-artige Anweisung zu erstellen:

arrayOfInvoices.GroupBy(i => i.Price < 10 ? 0 :
                             i.Price < 20 ? 1 :
                             /*else*/       2)

Um innerhalb der Gruppen zu bestellen, machen Sie einfach einen OrderBy , bevor Sie mit der Gruppierung beginnen:

arrayOfInvoices.OrderBy(i => i.Price)
               .GroupBy(i => i.Price < 10 ? 0 :
                             i.Price < 20 ? 1 :
                             /*else*/       2)
0
hinzugefügt
Das ist fantastisch!
hinzugefügt der Autor user2128702, Quelle
Wenn ich den resultierenden Gruppen absteigende oder aufsteigende Reihenfolge hinzufügen müsste, wie könnte ich das tun?
hinzugefügt der Autor user2128702, Quelle
Ja, genau nach Preis.
hinzugefügt der Autor user2128702, Quelle
Bestellung von was? Preis?
hinzugefügt der Autor D Stanley, Quelle
@ user2128702 zu meiner Antwort hinzugefügt
hinzugefügt der Autor D Stanley, Quelle