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
Mit OrderBy() und dann ThenBy()
Zuerst eben die Zelle, dann die Row.
Siehe Linq: 101 LINQ samples - Code Samples
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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
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 🙂
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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();