2009-09-10 97 views
0

我想排序我的xml,其中提供的模式放在下面。用linq排序xml文件

我想基於一個列值(按字母順序排列)

是否有可能做的LINQ to XML中的行進行排序?或者XSLT是我唯一的選擇?

感謝

卡米爾

好吧,我刪除架構,並提供文件

<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

一個簡單的XML樣本比起那個怪異的XSD更容易被吸收。 – AnthonyWJones 2009-09-10 11:50:17

回答

1

排序行可以作爲獲得的部分如下:

// 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; 

這會給你按「col_1」列的「值」排序的「行」元素的集合。

根據需要進行調整。