2009-09-10 98 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”列的“值”排序的“行”元素的集合。

根据需要进行调整。