Udostępnij za pośrednictwem


Sortowanie danych

Operację sortowania zamówień elementy sekwencję, na podstawie jednego lub więcej atrybutów.Pierwszym kryterium sortowania wykonuje podstawowego sortowania elementów.Określając drugiego kryterium sortowania, można sortować elementy w ramach każdej grupy podstawowej sortowania.

Następująca ilustracja pokazuje wyniki operacji sortowania alfabetycznego, na sekwencji znaków.

Operacja sortowania programu LINQ

Metody operator standardowej kwerendy, które sortować dane są wymienione w poniższej sekcji.

Metody

Nazwa metody

Opis

Kwerendy języka C# składni wyrażenia

Visual BasicSkładni wyrażenia kwerendy

Więcej informacji

OrderBy

Sortuje wartości w kolejności rosnącej.

orderby

Order By

Enumerable.OrderBy``2

Queryable.OrderBy``2

OrderByDescending

Sortuje wartości w kolejności malejącej.

orderby … descending

Order By … Descending

Enumerable.OrderByDescending``2

Queryable.OrderByDescending``2

ThenBy

Wykonuje drugie sortowanie w kolejności rosnącej.

orderby …, …

Order By …, …

Enumerable.ThenBy``2

Queryable.ThenBy``2

ThenByDescending

Wykonuje drugie sortowanie w kolejności malejącej.

orderby …, … descending

Order By …, … Descending

Enumerable.ThenByDescending``2

Queryable.ThenByDescending``2

Odwróć

Odwraca kolejność elementów w kolekcji.

Nie dotyczy.

Nie dotyczy.

Enumerable.Reverse``1

Queryable.Reverse``1

Przykłady składni wyrażenia kwerendy

Przykłady sortowania podstawowego

Sortowanie w kolejności rosnącej podstawowy

Poniższy przykład demonstruje, jak używać orderby (Order By w języku Visual Basic) klauzula kwerendy LINQ do sortowania ciągi w tablicy przez długość łańcucha, w kolejności rosnącej.

Dim words = {"the", "quick", "brown", "fox", "jumps"}

        Dim sortQuery = From word In words 
                        Order By word.Length 
                        Select word

        Dim sb As New System.Text.StringBuilder()
        For Each str As String In sortQuery
            sb.AppendLine(str)
        Next 

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output: 

        ' the 
        ' fox 
        ' quick 
        ' brown 
        ' jumps
string[] words = { "the", "quick", "brown", "fox", "jumps" };

            IEnumerable<string> query = from word in words
                                        orderby word.Length
                                        select word;

            foreach (string str in query)
                Console.WriteLine(str);

            /* This code produces the following output:

                the
                fox
                quick
                brown
                jumps
            */

Podstawowy malejący porządek sortowania

Kolejnym przykładzie przedstawiono sposób użycia orderbydescending (Order By Descending w języku Visual Basic) klauzula kwerendy LINQ do sortowania ciągi przez ich pierwszą literę w kolejności malejącej.

Dim words = {"the", "quick", "brown", "fox", "jumps"}

        Dim sortQuery = From word In words 
                        Order By word.Substring(0, 1) Descending 
                        Select word

        Dim sb As New System.Text.StringBuilder()
        For Each str As String In sortQuery
            sb.AppendLine(str)
        Next 

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output: 

        ' the 
        ' quick 
        ' jumps 
        ' fox 
        ' brown
string[] words = { "the", "quick", "brown", "fox", "jumps" };

            IEnumerable<string> query = from word in words
                                        orderby word.Substring(0, 1) descending 
                                        select word;

            foreach (string str in query)
                Console.WriteLine(str);

            /* This code produces the following output:

                the
                quick
                jumps
                fox
                brown
            */

Pomocnicze przykłady sortowania

Sortowanie w kolejności rosnącej pomocniczy

Poniższy przykład demonstruje, jak używać orderby (Order By w języku Visual Basic) klauzula kwerendy LINQ do wykonania sortowania podstawowego i pomocniczego, ciągów w tablicy.Ciągi są sortowane, przede wszystkim przez długość i rozpowszechnienia przez pierwszą literę ciągu, zarówno w kolejności rosnącej.

Dim words = {"the", "quick", "brown", "fox", "jumps"}

        Dim sortQuery = From word In words 
                        Order By word.Length, word.Substring(0, 1) 
                        Select word

        Dim sb As New System.Text.StringBuilder()
        For Each str As String In sortQuery
            sb.AppendLine(str)
        Next 

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output: 

        ' fox 
        ' the 
        ' brown 
        ' jumps 
        ' quick
string[] words = { "the", "quick", "brown", "fox", "jumps" };

            IEnumerable<string> query = from word in words
                                        orderby word.Length, word.Substring(0, 1)
                                        select word;

            foreach (string str in query)
                Console.WriteLine(str);

            /* This code produces the following output:

                fox
                the
                brown
                jumps
                quick
            */

Pomocniczy malejący porządek sortowania

Kolejnym przykładzie przedstawiono sposób użycia orderbydescending (Order By Descending w języku Visual Basic) klauzula kwerendy LINQ do wykonania sortowania podstawowego, w rosnącej kolejności i wtórnych sortowania, w kolejności malejącej.Ciągi są sortowane, przede wszystkim przez długość i rozpowszechnienia przez pierwszą literę ciągu.

Dim words = {"the", "quick", "brown", "fox", "jumps"}

        Dim sortQuery = From word In words 
                        Order By word.Length, word.Substring(0, 1) Descending 
                        Select word

        Dim sb As New System.Text.StringBuilder()
        For Each str As String In sortQuery
            sb.AppendLine(str)
        Next 

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output: 

        ' fox 
        ' the 
        ' quick 
        ' jumps 
        ' brown
string[] words = { "the", "quick", "brown", "fox", "jumps" };

            IEnumerable<string> query = from word in words
                                        orderby word.Length, word.Substring(0, 1) descending 
                                        select word;

            foreach (string str in query)
                Console.WriteLine(str);

            /* This code produces the following output:

                the
                fox
                quick
                jumps
                brown
            */

Zobacz też

Zadania

Porady: kolejność wyników klauzuli join (Przewodnik programowania w języku C#)

Porady: sortowanie wyników zapytania za pomocą LINQ (Visual Basic)

Porady: sortowanie lub filtrowanie danych tekstowych według dowolnego słowa lub pola (LINQ)

Informacje

Klauzula orderby (odwołanie w C#)

Order By — Klauzula (Visual Basic)

System.Linq

Koncepcje

Standardowe operatory zapytań — Omówienie