【vs.net 2008系列-LINQ】 7.对数据进行排序

排序操作按一个或多个属性对序列的元素进行排序。第一个排序条件对元素执行主要排序。通过指定第二个排序条件,可以对各个主要排序组中的元素进行排序。

下图演示对一个字符序列执行按字母排序操作的结果。

LINQ 排序操作

下面一节中列出了对数据进行排序的标准查询运算符方法。

 

查询表达式语法示例

主要排序示例

主要升序排序

下面的示例演示如何在 LINQ 查询中使用 orderby(在 Visual Basic 中为 Order By)子句来按字符串长度对数组中的字符串进行升序排序。

Visual Basic
Dim words() As String = {"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 查询中使用 orderbydescending(在 Visual Basic 中为 Order By Descending)子句来按字符串的第一个字母对字符串进行降序排序。

Visual Basic
Dim words() As String = {"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)子句来对数组中的字符串执行主要和次要排序。首先按字符串长度,其次按字符串的第一个字母,对字符串进行升序排序。

Visual Basic
Dim words() As String = {"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 查询中使用 orderbydescending(在 Visual Basic 中为 Order By Descending)子句来按升序执行主要排序,按降序执行次要排序。首先按字符串长度,其次按字符串的第一个字母,对字符串进行排序。

Visual Basic
Dim words() As String = {"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
            */
            

posted on 2008-10-22 09:41  黄昌楠  阅读(457)  评论(0)    收藏  举报

导航