2010-02-05 12 views
6

(Utilizando la última MVC 2 RC 2) Estoy tratando de resolver algunos de XML en LINQ (C#) por el valor del atributo de un elemento ...¿Cómo ordenar XML en LINQ C# por un valor de atributo? También MVC

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

Pero cuando paso esto a mi Ver I obtenga la excepción:

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> 

¿Puede alguien decirme cómo ordenar XML utilizando LINQ y hacer que se muestre correctamente?

Respuesta

12

EDIT: Bueno, creo que lo que desea es:

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

que también podría ser escrito como:

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

Lo sentimos, sí, usted es correcta- que había copiado la pieza equivocada de código en mi publicación! Argh. Lo he corregido ahora. –

+0

La variable 'sitio' es el valor que paso a mi vista, por ejemplo: vista de retorno (sitio); –

+0

@Matt: Righto - editado. –

Cuestiones relacionadas