Brzmi jak twoja struktura jest mniej więcej tak:
class ChildObject
{
public int Attribute { get; set; }
}
class ParentObject
{
public IEnumerable<ChildObject> ChildobjectList { get; set; }
}
W tym przypadku nie jest to możliwe, aby po prostu zamówić IEnumerable<ParentObject>
przez właściwość ChildObject.Attribute
, ponieważ istnieje potencjalnie wiele wartości dla każdego ParentObject
. W jaki sposób Linq będzie wiedział, jakiej wartości użyć do zamawiania? Będziesz musiał użyć jakiejś funkcji agregującej. Istnieje wiele opcji, ale oto kilka z nich:
Max
sortować według największego elementu w ChildobjectList
Min
sortować według najmniejszego elementu w ChildobjectList
First
sortować według pierwszego elementu ChildobjectList
Sum
do sortowania przez sumę wartości, zakładając rodzaj Attribute
można podsumować
To, jakiego używamy, zależy od dokładnych wymagań. W każdym razie użyjesz go tak:
var result =
ParentobjectsList.OrderBy(x => x.ChildobjectList.Max(c => c.Attribute));
dzięki, pomóżcie mi – Higune