Laden...

Liste mit Linq nach liste im inneren sortieren

Erstellt von Lutziffer vor 3 Jahren Letzter Beitrag vor 3 Jahren 244 Views
L
Lutziffer Themenstarter:in
39 Beiträge seit 2011
vor 3 Jahren
Liste mit Linq nach liste im inneren sortieren

Hallo,

ich habe eine Liste von Rows in welcher jede row eine liste cells hat. Nun möchte ich die rows alphanumerisch sortieren anhand einer poperty der celle:


 public class Cell
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public class Row
    {
        public int Id { get; set; }
        public List<Cell> Cells { get; set; }
    }

    public class SortRowsByCell
    {
        List<Row> _rows = new List<Row>(){
            new Row(){
                Id = 1,
                Cells = new List<Cell>(){
                    new Cell() {
                        Id = 1,
                        Name="A"
                    },
                    new Cell() {
                        Id = 2,
                        Name="1234"
                    },      
                },
            },
            new Row(){
                Id = 2,
                Cells = new List<Cell>(){
                    new Cell() {
                        Id = 1,
                        Name="B"
                    },
                    new Cell() {
                        Id = 2,
                        Name="1234"
                    },
                },
            },
            new Row(){
                Id = 3,
                Cells = new List<Cell>(){
                    new Cell() {
                        Id = 1,
                        Name="c"
                    },
                    new Cell() {
                        Id = 2,
                        Name="1234"
                    },
                },
            },
        };
    }

}

Nun möchte ich das die Rows sortiert werden und zwar alphabetisch nach dem namen der Zelle mit der id 1

Ich bin mir nicht genau sicher wie ich das .Orderby hier so komplex anwenden kann.

Vielen Dank

16.835 Beiträge seit 2008
vor 3 Jahren

Mit OrderBy() und dann ThenBy()
Zuerst eben die Zelle, dann die Row.

Siehe Linq: 101 LINQ samples - Code Samples

L
Lutziffer Themenstarter:in
39 Beiträge seit 2011
vor 3 Jahren

Danke für die Antwort

Aber so wie ich das verstehe sortiere ich sie dann zuerst nach dem was in ordeby steht und dann nach dem was in thenby steht

Es soll aber nur nach Cell Name wo Id = 1 ist sortiert werden :S

Sorry ich hab Linq bisher noch nicht so komplex angewandt

16.835 Beiträge seit 2008
vor 3 Jahren

Dann machst erst nen Where() und dann ein OrderBy.
Schau Dir einfach mal die 101 Samples an und probier was aus.

Wenn Du es dann nicht hin bekommst, dann können wir gern weiter helfen.
Aber macht ja jetzt wenig Sinn, wenn Dir einfach wer die Lösung hin knallt und Du es nicht verstehst 🙂

L
Lutziffer Themenstarter:in
39 Beiträge seit 2011
vor 3 Jahren

Ok danke ich denke ich habe es durch viel probieren endlich hinbekommen 🙂

Hier meine Lösung:


_rows .OrderBy(row => row.Cells.Where(cell => cell.Id  == _sortColumnId).Select(filteredCell => filteredCell.Name).FirstOrDefault()).ToList();