/// <summary> /// сортируем узлы по значению аттрибута /// </summary> /// <param name="node_name"></param> /// <param name="attr_name"></param> public void SortNodesByAttrValue(string node_name, string attr_name, NodeSortFunc _sort_delegate) { var row_nodes = ExtFindNodes(node_name); if (row_nodes.Count > 0) { row_nodes.Sort((ExtXmlNode el1, ExtXmlNode el2) => { return(_sort_delegate(el1, el2, attr_name)); }); // удаляем узлы, упорядоченные по-старому... foreach (var nd in row_nodes) { if (nd.ParentNode != null) { nd.ParentNode.RemoveChild(nd.InnerNode); } } // вставляем в новом порядке XmlNode prev_node = null; foreach (var nd in row_nodes) { if (nd.ParentNode != null) { nd.ParentNode.InsertBefore(nd.InnerNode, null); prev_node = nd.InnerNode; } } } }
/// <summary> /// сортируем узлы по значению аттрибута /// </summary> /// <param name="node_name"></param> /// <param name="attr_name"></param> public void SortNodesByAttrValue( string node_name, string attr_name, NodeSortFunc _sort_delegate ) { var row_nodes = ExtFindNodes( node_name ); if ( row_nodes.Count > 0 ) { row_nodes.Sort( (ExtXmlNode el1, ExtXmlNode el2) => { return _sort_delegate(el1,el2,attr_name);} ); // удаляем узлы, упорядоченные по-старому... foreach (var nd in row_nodes) { if ( nd.ParentNode != null ) nd.ParentNode.RemoveChild(nd.InnerNode); } // вставляем в новом порядке XmlNode prev_node = null; foreach (var nd in row_nodes) { if ( nd.ParentNode != null ) { nd.ParentNode.InsertBefore(nd.InnerNode, null); prev_node = nd.InnerNode; } } } }