2010-02-05 1 views
6

(Usando l'ultima MVC 2 RC 2) Sto cercando di risolvere alcuni XML in LINQ (C#) in base al valore dell'attributo di un elemento ...Come ordinare l'XML in LINQ C# con un valore di attributo? Anche MVC

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

Ma quando mi passa questo al mio View I ottenere l'eccezione:

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> 

Qualcuno può dirmi come ordinare XML utilizzando LINQ e renderlo correttamente?

risposta

12

EDIT: Ok, penso che si desidera solo:

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

che potrebbe anche essere scritta come:

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

Siamo spiacenti, sì, hai corretta- avevo copiato il pezzo sbagliato di codice nel mio post! Argh. L'ho corretto ora. –

+0

La variabile "sito" è il valore che sto passando nella mia vista, ad esempio: return View (sito); –

+0

@Matt: Righto - modificato. –