2009-09-10 8 views
0

Я хотел бы отсортировать мой xml, для которого расположенная схема, расположенная ниже.sorting xml file with linq

Я хотел бы отсортировать строки на основе одного значения столбца (алфавитного)

Можно ли сделать это в Linq для 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

ответ

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» «Значение».

При необходимости отрегулируйте.