2009-06-09 7 views
0

l'instruction LINQ suivante renvoie une IOrderedEnumerable:Convertir IOrderedEnumerable à XElement

 var list = from e in ritorno.Elements("dossier") 
           orderby e.Element("name") 
           select e; 

Comment convertir liste XElement? Merci

EDIT

liste

est IOrderedEnumerable<System.Xml.Linq.XElement>

+0

Oui, mais un IOrderedEnumerable de quoi? Comme Jon dit, voulez-vous une liste de XElements, ou un XElement avec XElements à l'intérieur? – Benjol

Répondre

1

Voulez-vous un seul XElement pour contenir tous les éléments dans la séquence?

XElement element = new XElement("container", list) 

(évidemment changer « conteneur » pour tout ce que vous voulez que l'élément contenant à appeler.)

Si c'est pas ce que vous voulez, s'il vous plaît élaborer.

+0

c'est exactement ce que je veux, mais ce que vous avez suggéré me donne une erreur "Au moins un objet doit implémenter IComparable" .. – pistacchio

1

Vous pouvez faire quelque chose comme:

XElement xml = new XElement("dossiers", 
       from e in ritorno.Elements("dossier") 
       orderby e.Element("name") 
       select new XElement("dossier", e.Value)); 

qui est essentiellement ce que Jon essayait de dire (je pense).

+0

étrangement, cela me donne aussi la même erreur "Au moins un objet doit implémenter IComparable" – pistacchio

+0

soit que vous devez ajouter orderby e.Element ("nom"). Valeur? –

0

Ok, le problème était avec la distribution de e.Element ("nom").

Ce qui suit fonctionne maintenant:

 var ritornoOrdinato = from e in segnalazioni.Descendants("dossier") 
           orderby (string)e.Element("ANAG_RAGSOC_CGN") 
           select e; 
     return new XElement("NewDataSet", ritornoOrdinato);