XPathExpression.AddSort Метод

Определение

При переопределении в производном классе выполняется сортировка узлов, выбранных выражением XPath.

Перегрузки

AddSort(Object, IComparer)

При переопределении в производном классе выполняется сортировка узлов, выбранных выражением XPath, согласно заданному объекту IComparer.

AddSort(Object, XmlSortOrder, XmlCaseOrder, String, XmlDataType)

При переопределении в производном классе выполняет сортировку узлов, выбранных выражением XPath, согласно указанным параметрам.

AddSort(Object, IComparer)

Исходный код:
XPathExpr.cs
Исходный код:
XPathExpr.cs
Исходный код:
XPathExpr.cs

При переопределении в производном классе выполняется сортировка узлов, выбранных выражением XPath, согласно заданному объекту IComparer.

public abstract void AddSort (object expr, System.Collections.IComparer comparer);

Параметры

expr
Object

Объект, представляющий ключ сортировки. Это может быть значение string узла или объект XPathExpression со скомпилированным выражением XPath.

comparer
IComparer

Объект IComparer, предоставляющий сравнения определенных типов данных для сравнения двух объектов на предмет эквивалентности.

Исключения

XPathExpression или ключ сортировки включает префикс и либо XmlNamespaceManager отсутствует, либо не удается найти этот префикс в предоставленном XmlNamespaceManager.

Комментарии

Метод AddSort позволяет пользователям сортировать объекты по типу данных, а не по строке или числу. Объект IComparer предоставляет реализацию метода , который поддерживает сортировку Compare по определяемым пользователем классам.

В следующем примере книги сортируются по номеру ISBN, где isbn — объект, реализующий IComparer интерфейс .

XPathExpression expression = navigator.Compile("bookstore/book");  
ISBN isbn = new ISBN();  
expression.AddSort("@ISBN", (IComparer)isbn);  

Ниже приведены важные примечания AddSort , которые следует учитывать при использовании метода .

  • Порядок добавления сортировок обеспечивает порядок ключей сортировки.

  • Если для ключа сортировки XPathExpression или требуется разрешение пространства имен, необходимо использовать SetContext метод для разрешения XmlNamespaceManager пространства имен.

  • XPathExpression Если не содержит префикс, предполагается, что универсальный код ресурса (URI) пространства имен является пустым пространством имен. Если XML-код включает пространство имен по умолчанию, необходимо по-прежнему SetContext использовать метод и предоставить XmlNamespaceManager объект , содержащий префикс и URI пространства имен для обработки пространства имен по умолчанию.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

AddSort(Object, XmlSortOrder, XmlCaseOrder, String, XmlDataType)

Исходный код:
XPathExpr.cs
Исходный код:
XPathExpr.cs
Исходный код:
XPathExpr.cs

При переопределении в производном классе выполняет сортировку узлов, выбранных выражением XPath, согласно указанным параметрам.

public abstract void AddSort (object expr, System.Xml.XPath.XmlSortOrder order, System.Xml.XPath.XmlCaseOrder caseOrder, string lang, System.Xml.XPath.XmlDataType dataType);

Параметры

expr
Object

Объект, представляющий ключ сортировки. Это может быть значение string узла или объект XPathExpression со скомпилированным выражением XPath.

order
XmlSortOrder

Значение XmlSortOrder, указывающее порядок сортировки.

caseOrder
XmlCaseOrder

Значение XmlCaseOrder, указывающее, как должны сортироваться прописные и строчные буквы.

lang
String

Язык, используемый для сравнения. Использует класс CultureInfo, который может передаваться в метод Compare для типов языков, например, "us-en" для английского языка (американская версия). Если задана пустая строка, для определения CultureInfo используется среда системы.

dataType
XmlDataType

Значение XmlDataType, указывающее порядок сортировки для типа данных.

Исключения

XPathExpression или ключ сортировки включает префикс и либо XmlNamespaceManager отсутствует, либо не удается найти этот префикс в предоставленном XmlNamespaceManager.

Примеры

В следующем примере показано, как отсортировать документ книги по цене в порядке убывания.

using System;
using System.Xml;
using System.Xml.XPath;

namespace SortBooks
{
    class Program
    {
        static void Main(string[] args)
        {
            XPathDocument doc = new XPathDocument("contosoBooks.xml");
            XPathNavigator nav = doc.CreateNavigator();

            XPathExpression expr;
            expr = nav.Compile("/bookstore/book");

            expr.AddSort("price", XmlSortOrder.Descending,
                           XmlCaseOrder.None, "", XmlDataType.Number);

            XPathNodeIterator iterator = nav.Select(expr);
            while (iterator.MoveNext())
            {
                if (iterator.Current.HasChildren)
                {
                    XPathNodeIterator childIter =
              iterator.Current.SelectChildren(XPathNodeType.Element);
                    while (childIter.MoveNext())
                    {
                        Console.WriteLine(childIter.Current.Value);
                    }
                }
            }
        }
    }
}

В примере в качестве входных данных используется файл books.xml.

<?xml version="1.0" encoding="utf-8" ?>   
<bookstore>  
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">  
        <title>The Autobiography of Benjamin Franklin</title>  
        <author>  
            <first-name>Benjamin</first-name>  
            <last-name>Franklin</last-name>  
        </author>  
        <price>8.99</price>  
    </book>  
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">  
        <title>The Confidence Man</title>  
        <author>  
            <first-name>Herman</first-name>  
            <last-name>Melville</last-name>  
        </author>  
        <price>11.99</price>  
    </book>  
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">  
        <title>The Gorgias</title>  
        <author>  
            <name>Plato</name>  
        </author>  
        <price>9.99</price>  
    </book>  
</bookstore>  

Комментарии

  • Порядок добавления сортировок обеспечивает порядок ключей сортировки.

  • Если для ключа сортировки XPathExpression или требуется разрешение пространства имен, необходимо использовать SetContext метод для разрешения XmlNamespaceManager пространства имен.

  • XPathExpression Если не содержит префикс, предполагается, что универсальный код ресурса (URI) пространства имен является пустым пространством имен. Если XML-код включает пространство имен по умолчанию, необходимо по-прежнему SetContext использовать метод и предоставить XmlNamespaceManager объект , содержащий префикс и URI пространства имен для обработки пространства имен по умолчанию.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1