2013-06-15 18 views

Odpowiedz

4

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)); 
+0

dzięki, pomóżcie mi – Higune

0
var sortedList = ParentobjectsList.OrderBy(x => x.ChildobjectList.Attribute); 
+0

to mi nie pomoże – Higune

Powiązane problemy