Linq to sql OrderBy使用
2012-03-21 21:20
369 查看
Linq中提供 OrderBy和OrderByDescending 两种操作。
说明:默认为升序
语句描述:使用where和orderby按运费进行排序。
说明:按多个表达式进行排序,例如先按City排序,当City相同时,按ContactName排序。这一句用Lambda表达式像这样写:
在T-SQL中没有ThenBy语句,其依然翻译为OrderBy,所以也可以用下面语句来表达:
所要注意的是,多个OrderBy操作时,级连方式是按逆序。 对于降序的,用相应的降序操作符替换即可。
需要说明的是,OrderBy操作,不支持按type排序,也不支持匿名类。比如
会被抛出异常。错误是前面的操作有匿名类,再跟OrderBy时,比较的是类别。比如
如果你想使用OrderBy(c => c),其前提条件是,前面步骤中,所产生的对象的类别必须为C#语言的基本类型。比如下句,这里City为string类型。
语句描述:使用orderby先按发往国家再按运费从高到低的顺序对 EmployeeID 1 的订单进行排序。
1.简单形式
这个例子使用 orderby 按雇用日期对雇员进行排序:var q = from e in db.Employees orderby e.HireDate select e;
说明:默认为升序
2.带条件形式
注意:Where和Order By的顺序并不重要。而在T-SQL中,Where和Order By有严格的位置限制。var q = from o in db.Orders where o.ShipCity == "London" orderby o.Freight select o;
语句描述:使用where和orderby按运费进行排序。
3.降序排序
var q = from p in db.Products orderby p.UnitPrice descending select p;
4.ThenBy
语句描述:使用复合的 orderby 对客户进行排序,进行排序:var q = from c in db.Customers orderby c.City, c.ContactName select c;
说明:按多个表达式进行排序,例如先按City排序,当City相同时,按ContactName排序。这一句用Lambda表达式像这样写:
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操作时,级连方式是按逆序。 对于降序的,用相应的降序操作符替换即可。
var q = db.Customers .OrderByDescending(c => c.City) .ThenByDescending(c => c.ContactName).ToList();
需要说明的是,OrderBy操作,不支持按type排序,也不支持匿名类。比如
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#语言的基本类型。比如下句,这里City为string类型。
var q = db.Customers .Select(c => c.City) .OrderBy(c => c).ToList();
5.ThenByDescending
这两个扩展方式都是用在OrderBy/OrderByDescending之后的,第一个ThenBy/ThenByDescending扩展方法作为第二位排序依据,第二个ThenBy/ThenByDescending则作为第三位排序依据,以此类推var q = from o in db.Orders where o.EmployeeID == 1 orderby o.ShipCountry, o.Freight descending select o;
语句描述:使用orderby先按发往国家再按运费从高到低的顺序对 EmployeeID 1 的订单进行排序。
相关文章推荐
- LINQ to SQL语句(5)之Order By
- LinQ to Object --- 有关于Dictionary、SQL(LEFT OUTER JOIN \ Group OrderBy Sum) 操作
- LINQ to SQL语句(5)之Order By
- LINQ to SQL语句之Order By
- ASP.NET使用Linq to SQL实现基本的增、删、改、查及绑定控件
- 扩展LINQ to SQL:使用Lambda Expression批量删除数据
- 关于在Webservice里使用LinqToSQL遇到一对多关系的父子表中子表需要ToList输出泛型而产生循环引用错误的解决办法!(转)
- 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Part 2) (引用)
- LINQ to XML 结合 LINQ to SQL 使用
- 扩展LINQ to Entity:使用Lambda Expression批量删除数据------让微软帮我们生成T-SQL语句
- 使用LINQ to SQL 第一部分
- HOW TO ORDER BY A CUSTOM SQL FORMULA/EXPRESSION WHEN USING HIBERNATE CRITERIA API
- Asp.net MVC、Extjs(运用Linq to SQL和List泛型)批量更新、删除、打印(使用CKEditor)、导出Excel
- Silverlight 2 (beta1)数据操作(5)——使用LINQ to SQL进行数据CRUD操作(上)
- LINQ to SQL快速上手 step by step
- linq to sql简单使用
- Visual Entity 使用教程(做最好用的实体代码生成器 支持 NHibernate 和 Linq to SQL)
- Linq to SQL之使用事务
- Silverlight 2 (beta1)数据操作(6)——使用LINQ to SQL进行数据CRUD操作(下)
- Linq To Sql中实现Left Join与Inner Join使用Linq语法与lambda表达式