2010-02-05 9 views
6

(przy użyciu najnowszych MVC 2 RC 2) Próbuję uporządkować niektóre XML w LINQ (C#) przez wartość elementu za atrybutu ...Jak sortować XML w LINQ C# według wartości atrybutu? Również MVC

var sites = from s in xDoc.Element("sites").Elements("site") 
orderby s.Attribute("name") 
select s; 

Ale kiedy mijam to moim zdaniem I uzyskać wyjątek:

Exception Details: System.ArgumentException: At least one object must implement IComparable. 
Source Error: 
Line 37:    </th> 
Line 38:   </tr> 
Line 39:   <% foreach (var item in Model) 
Line 40:    { %> 
Line 41:   <tr> 

Czy ktoś może mi powiedzieć, jak posortować XML za pomocą LINQ i czy renderuje się go poprawnie?

Odpowiedz

12

EDIT: Dobra, myślę, że po prostu chcesz:

var sites = from s in xDoc.Element("sites").Elements("site") 
      orderby (string) s.Attribute("name") 
      select s; 

co również może być zapisany jako:

var sites = xDoc.Element("sites") 
       .Elements("site") 
       .OrderBy(s => (string) s.Attribute("name")); 
+0

Niestety, tak, jesteś korygowane miałem kopiowane zły kawałek kod do mojego posta! Argh. Poprawiłem to teraz. –

+0

Zmienna "site" jest wartością, którą przechodzę do mojego widoku, np .: return View (site); –

+0

@Matt: Righto - edytowane. –