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);
        }