int IComparer.Compare(object o1, object o2) { XPathSortElement xpathSortElement = (XPathSortElement)o1; XPathSortElement xpathSortElement2 = (XPathSortElement)o2; for (int i = 0; i < this._rgSorters.Count; i++) { XPathSorter xpathSorter = (XPathSorter)this._rgSorters[i]; int num = xpathSorter.Compare(xpathSortElement.Values[i], xpathSortElement2.Values[i]); if (num != 0) { return(num); } } XmlNodeOrder xmlNodeOrder = xpathSortElement.Navigator.ComparePosition(xpathSortElement2.Navigator); if (xmlNodeOrder == XmlNodeOrder.After) { return(1); } if (xmlNodeOrder != XmlNodeOrder.Same) { return(-1); } return(0); }
public BaseIterator Sort(ArrayList rgElts, IXmlNamespaceResolver nsm) { rgElts.Sort(this); XPathNavigator[] array = new XPathNavigator[rgElts.Count]; for (int i = 0; i < rgElts.Count; i++) { XPathSortElement xpathSortElement = (XPathSortElement)rgElts[i]; array[i] = xpathSortElement.Navigator; } return(new ListIterator(array, nsm)); }
private ArrayList ToSortElementList(BaseIterator iter) { ArrayList arrayList = new ArrayList(); int count = this._rgSorters.Count; while (iter.MoveNext()) { XPathSortElement xpathSortElement = new XPathSortElement(); xpathSortElement.Navigator = iter.Current.Clone(); xpathSortElement.Values = new object[count]; for (int i = 0; i < this._rgSorters.Count; i++) { XPathSorter xpathSorter = (XPathSorter)this._rgSorters[i]; xpathSortElement.Values[i] = xpathSorter.Evaluate(iter); } arrayList.Add(xpathSortElement); } return(arrayList); }