程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 3.0入門系列(六)-之OrderBy操作(2)

C# 3.0入門系列(六)-之OrderBy操作(2)

編輯:關於C語言

ThenBy的和ThenByDescending,也就是按多個列進行排序,第一個列子是先按city,city相同的再按contactname排序,第二個例子中,第二序列為降序。

ThenBy:
var q =
from c in db.Customers
orderby c.City, c.ContactName
select c;
ThenByDescending:
var q =
from o in db.Orders
where o.EmployeeID == 1
orderby o.ShipCountry, o.Freight descending
select o;

對這兩個句子解釋下。

對於ThenBy操作,其級連形式為:

var q = db.Customers.OrderBy(c => c.City).ThenBy(c => c.ContactName).ToList();

因為T-SQL中,並沒有ThenBy語句,其依然翻譯為OrderBy

所以,也可以用下面語句來表達

var q = db.Customers.OrderBy(c => c.ContactName).OrderBy(c => c.City).ToList();

所要注意的是,是兩個orderby的順序,多個orderby操作時,級連方式是按逆序.即先按city排時,city要放在最後。

對於降序的,用相應的降序操作符替換即刻。

var q = db.Customers.OrderByDescending(c => c.City).ThenByDescending(c => c.ContactName).ToList();

需要說明的是,orderby操作,不支持按type排序,也不支持匿名類。

比如 var q = db.Customers.OrderBy(c => c).ToList();和

var q = db.Customers.OrderBy(c => new {c.City,c.ContactName}).ToList();

會被拋出異常。但是,既然提了,大家在這個問題就不會犯錯誤,常見的錯誤是前面的操作有匿名類,再跟orderby時,比較的是類別。比如

var q = db.Customers.Select(c => new { c.City, c.Address }).OrderBy(c => c).ToList();

如果你想使用OrderBy(c => c),其前提條件是,前面步驟中,所產生的對象的類別必須為C#語言的基本類型。比如

var q = db.Customers.Select(c=>c.City).OrderBy(c => c).ToList();

city為string類型。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved