2009-09-10 11 views
0

Je voudrais trier mon fichier XML pour lequel le schéma introduit est placé ci-dessous.trier le fichier XML avec linq

Je voudrais trier les lignes à base d'une valeur de colonne (alphabétique)

Est-il possible de le faire dans LINQ à Xml? Ou XSLT est ma seule option?

Merci

Kamil

Ok, je l'ai enlevé schéma et fournir une partie du fichier

<Matrix> 
    ... 
    <Rows> 
     <Row> 
     <Visible>1</Visible> 
     <Columns> 
      <Column> 
      <ID>col_f</ID> 
      <Value> 
      </Value> 
      </Column> 
      <Column> 
      <ID>col_0</ID> 
      <Value>r00329</Value> 
      </Column> 
      <Column> 
      <ID>col_1</ID> 
      <Value>Gerbera "Ambiance" rosa-creme</Value> 
      </Column> 
      <Column> 
      <ID>col_2</ID> 
      <Value> 
      </Value> 
      </Column> 
      <Column> 
      <ID>col_dost</ID> 
      <Value>Bl... Holland</Value> 
      </Column> 
      <Column> 
      <ID>col_3</ID> 
      <Value>0,000</Value> 
      </Column> 
      <Column> 
      <ID>col_5</ID> 
      <Value>0,000</Value> 
      ... 
+1

Un échantillon simple du XML serait beaucoup plus facile à absorber que ce XSD monstre. – AnthonyWJones

Répondre

1

lignes triées peuvent être obtenues comme suit:

// assume rows is a reference to the <Rows> node 
var query = from row in rows.Elements("Row") 
      let sortValue = (
       from c in row.Element("Columns").Elements("Column") 
       where c.Element("ID").Value == "col_1" 
       select c.Element("Value").Value 
      ).FirstOrDefault() 
      orderby sortValue 
      select row; 

Cela vous donnera une collection d'éléments "Row" triés par "Value" de la colonne "col_1".

Ajuster au besoin.