排序操作按一个或多个特性对序列的元素进行排序。 第一个排序条件对元素执行主要排序。 通过指定第二个排序条件,可以对各个主要排序组中的元素进行排序。
下图演示对一个字符序列执行按字母排序操作的结果。
.png)
下面一节中列出了对数据进行排序的标准查询运算符方法。
方法
| 方法名 | 说明 | C# 查询表达式语法 | Visual Basic 查询表达式语法 | 更多信息 | 
|---|---|---|---|---|
| OrderBy | 按升序对值进行排序。 | orderby | Order By | |
| OrderByDescending | 按降序对值进行排序。 | orderby … descending | Order By … Descending | |
| ThenBy | 按升序执行次要排序。 | orderby …, … | Order By …, … | |
| ThenByDescending | 按降序执行次要排序。 | orderby …, … descending | Order By …, … Descending | |
| Reverse | 颠倒集合中的元素的顺序。 | 不适用。 | 不适用。 | 
查询表达式语法示例
主要排序示例
主要升序排序
下面的示例演示如何在 LINQ 查询中使用 orderby(在 Visual Basic 中为 Order By)子句来按字符串长度对数组中的字符串进行升序排序。
        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
            */
主要降序排序
下一个示例演示如何在 LINQ 查询中使用 orderby descending(在 Visual Basic 中为 Order By Descending)子句来按字符串的第一个字母对字符串进行降序排序。
        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
            */
次要排序示例
次要升序排序
下面的示例演示如何在 LINQ 查询中使用 orderby(在 Visual Basic 中为 Order By)子句来对数组中的字符串执行主要和次要排序。 首先按字符串长度,其次按字符串的第一个字母,对字符串进行升序排序。
        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
            */
次要降序排序
下一个示例演示如何在 LINQ 查询中使用 orderby descending(在 Visual Basic 中为 Order By Descending)子句来按升序执行主要排序,按降序执行次要排序。 首先按字符串长度,其次按字符串的第一个字母,对字符串进行排序。
        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
            */
请参见
任务
如何:使用 LINQ 排序查询结果 (Visual Basic)