I would like to sort the collection based on the subcollection property.
//the subcollection public class Salary { public int SalaryId {get;set;} public int SalaryYear {get;set;} public double SalaryValue {get;set;} //this is the field we want to sort the parent collection "Person" } //the main collection public class Person { public int PersonId {get;set;} public string PersonName {get;set;} public List<Salary> Salaries {get;set;} }
Below for the purpose of testing, I am preparing my collection of people with internal salary collections each:
List<Person> people = new List<Person>(); //add two salaries for Junior people.Add(new Person { PersonId = 1, PersonName = "Junior" }); people[0].Salaries.Add(new Salary { SalaryId=1, SalaryYear=2011, SalaryValue=80000 }); people[0].Salaries.Add(new Salary { SalaryId=2, SalaryYear=2010, SalaryValue=70000 }); //add two salaries for Johanna people.Add(new Person { PersonId = 2, PersonName = "Johanna" }); people[0].Salaries.Add(new Salary { SalaryId=3, SalaryYear=2011, SalaryValue=40000 }); people[0].Salaries.Add(new Salary { SalaryId=4, SalaryYear=2010, SalaryValue=30000 });
Now we want to sort the collection of people, but using their internal SalaryValue collection as a parameter.
How can I sort the list, but using LINQ / Lambda expressions in the internal Salaries collection?
So, I would:
PersonName: Johanna, SalaryValue=30000, SalaryYear=2010 PersonName: Johanna, SalaryValue=40000, SalaryYear=2011 PersonName: Junior, SalaryValue=70000, SalaryYear=2010 PersonName: Junior, SalaryValue=80000, SalaryYear=2011
Junior M
source share