在LINQ查询表达式中,orderby子句可以对查询结果进行排序。排序方式可以为“升序”或“降序”,且排序的键可以为一个或多个。
注意:LINQ查询表达式对查询结果的默认排序方式为“升序”。
下面的代码实例中的OrderQuery()函数演示了orderby子句对查询的结果进行倒序排序的方法,具体步骤说明如下。
(1)创建数据类型为List<UserInfo>的数据源users。
(2)使用where子句选择ID值小于6的用户。
(3)使用orderby子句对查询结果按照用户的名称进行倒序排序。
(4)使用foreach语句输出查询的结果。
private void OrderQuery()
{ ///构建数据源
List<UserInfo> users = new List<UserInfo>();
for (int i = 1; i < 10; i++)
{
users.Add(new UserInfo(i,"User0" + i.ToString(),"User0" + i.ToString() + "@web.com"));
}
///根据用户的Username的值进行倒序排序
var values = from u in users
where u.ID < 6
orderby u.Username descending
select u;
///显示查询结果
foreach (UserInfo u in values)
{
Response.Write(u.Username + "</br>");
}
}
运行上述实例代码,在IE浏览器中查看orderby子句排序的结果,如图所示。
下面的代码实例中的OrderOtherQuery()函数演示了orderby子句对查询的结果进行倒序排序(多个排序关键字)的方法,具体步骤说明如下。
(1)创建数据类型为List<UserInfo>的数据源users。
(2)使用where子句选择ID值小于6的用户。
(3)使用orderby子句对查询结果进行排序,并使用两个排序关键字。u.Username关键字按照用户的名称进行倒序排序,u.ID关键字按照用户的ID值进行升序排序。
(4)使用foreach语句输出查询的结果。
private void OrderOtherQuery()
{ ///构建数据源
List<UserInfo> users = new List<UserInfo>();
for (int i = 1; i < 10; i++)
{
users.Add(new UserInfo(i,"User0" + i.ToString(),"User0" + i.ToString() + "@web.com"));
}
///根据用户的Username的值进行倒序排序
var values = from u in users
where u.ID < 6
orderby u.Username descending,u.ID ascending
select u;
///显示查询结果
foreach (UserInfo u in values)
{
Response.Write(u.Username + "</br>");
}
}
运行上述实例代码,在IE浏览器中查看orderby子句排序(多个排序关键字)的结果,如图所示。