`
chungle
  • 浏览: 60000 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LINQ to SQL语句(5)之Order By

阅读更多

 

Order By操作

适用场景:对查询出的语句进行排序,比如按时间排序等等。

说明:按指定表达式对集合排序;延迟,:按指定表达式对集合排序;延迟,默认是升序,加上descending表示降序,对应的扩展方法是OrderBy和OrderByDescending

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 = 
    .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 的订单进行排序。

6.带GroupBy形式

var q = 
    from p in db.Products
    group p by p.CategoryID into g
    orderby g.Key
    select new {
        g.Key,
        MostExpensiveProducts =
            from p2 in g
            where p2.UnitPrice == g.Max(p3 => p3.UnitPrice)
            select p2
    };

语句描述:使用orderby、Max 和 Group By 得出每种类别中单价最高的产品,并按 CategoryID 对这组产品进行排序。

 

分享到:
评论

相关推荐

    LINQ to SQL语句之Join和Order By

    LINQ to SQL语句之Join和Order By部分代码 语句描述:这个例子在From子句中使用外键导航筛选在西雅图的雇员,同时列出其所在地区。这条生成SQL语句为: SELECT [t0].[FirstName], [t0].[LastName], [t2]....

    LINQ To SQL实现分页效果源码

    由于LINQ延迟执行,直到你真正遍历结果集时才会执行SQL语句。 ```csharp foreach (var customer in pagedQuery) { // 处理每个customer对象 } ``` 5. **优化性能**:在某些情况下,为了提高性能,你可能需要...

    LINQ to SQL语句(9)之Top 和Bottom和Paging和SqlMethods

    本篇文章将深入探讨LINQ to SQL语句中关于“Top”、“Bottom”、分页(Paging)以及SqlMethods的相关知识。 首先,让我们来理解“Top”和“Bottom”这两个概念。在SQL中,`TOP`用于选取结果集的前N行,而“Bottom”...

    Linq To Sql进阶系列

    - **Linq To Sql集成**:Linq To Sql支持直接调用数据库中的用户自定义函数,无需额外的SQL语句编写,进一步提高了代码的可读性和维护性。 #### 5. Linq To Sql进阶系列(五)StoreProcedure篇 ##### 存储过程与...

    LINQ to SQL语句(18)之运算符转换

    在本篇内容中,我们将深入探讨LINQ to SQL语句中的运算符转换,这是理解并有效利用LINQ to SQL的关键知识点。 1. **运算符重载** 在LINQ to SQL中,查询表达式通常涉及各种算术、比较和逻辑运算符。这些运算符在C#...

    LINQ to SQL语句(23)之动态查询

    在本篇主题“LINQ to SQL语句(23)之动态查询”中,我们将深入探讨如何在运行时构建和执行查询,这对于处理不确定的数据访问需求或构建高度可配置的应用程序特别有用。 动态查询是LINQ的一个关键特性,它允许我们...

    LINQ to SQL语句(15)之String

    【LINQ to SQL语句(15)之String】深入解析 LINQ(Language Integrated Query,语言集成查询)是.NET框架中的一个强大工具,它允许开发者在编程语言中直接书写查询,无需离开代码环境去编写SQL语句。在这个主题中,...

    Linq to Sql 教程大全

    它提供了将数据库表映射到.NET Framework中类的能力,允许开发人员通过编写LINQ查询而不是SQL语句来操作数据。 #### 二、LINQ to SQL 的基本概念 - **数据上下文(DataContext)**:用于连接数据库并管理对数据库...

    LINQ To Sql学习文档

    - **查询操作**:LINQ To SQL 提供了一系列查询方法,如 Select、Where、OrderBy 等,这些方法可以帮助开发者轻松地构建复杂的查询逻辑。 - **数据修改**:除了查询之外,LINQ To SQL 还支持数据的插入、更新和删除...

    linq to sql 学习笔记

    - **日志功能**:DataContext支持日志记录,可以通过设置Log属性将查询转换的SQL语句和执行结果输出到日志,方便调试和性能分析。 3. LINQ to SQL的操作 - **查询**:使用查询表达式或方法语法,可以从...

    linq to sql学习资料(全word文档)

    "LINQ to SQL"是LINQ的一个特定实现,它允许开发者直接在SQL Server数据库上执行查询,将SQL语句转换为.NET代码,极大地简化了数据访问层的操作。本学习资料包涵盖了并发控制、事务管理、查询语法以及存储过程等多个...

    浅谈Linq to sql 的多表关联与动态条件查询

    浅谈Linq to sql 的多表关联与动态条件查询 Linq to sql 是一种强大的数据查询语言,它可以帮助开发者快速、高效地访问和操作数据库数据。在本文中,我们将讨论 Linq to sql 的多表关联和动态条件查询这两个重要的...

    LINQ_TO_SQL_高级查询介绍

    在本篇中,我们将深入探讨如何使用LINQ to SQL执行高级查询,特别是`Order By`和`Group By`操作。 **1. `Order By`操作** `Order By`操作用于对查询结果进行排序。在C#中,我们可以使用`orderby`关键字来实现这...

    Linq 大全 Linq To Sql Linq To DataSet Linq To Object Linq to Xml

    通过使用LINQ to SQL,可以避免编写SQL语句,提高代码的可读性和可维护性,同时提供编译时错误检查和性能优化。 2. **LINQ to DataSet**: 在.NET环境中,DataSet通常用于存储和操作离线数据。LINQ to DataSet扩展...

    LINQ_to_SQL语法及实例大全

    5. LINQ to SQL语句之OrderBy:OrderBy用于对数据进行排序。排序可以是简单的升序或降序,也可以结合ThenBy或ThenByDescending进行多级排序。GroupBy的带条件形式、带GroupBy形式也是本章节的关键知识点。 6. LINQ ...

    LINQ教程中文版(LINQ TO SQL ,LINQ TO XML)

    5. **LINQ操作**:可以使用各种LINQ操作符(如Where、Select、OrderBy等)对XML元素进行过滤、转换和排序。 教程中虽然制作较为粗糙,但作为学习LINQ的基础教材,它能帮助开发者快速理解并掌握这两种技术。通过实际...

    Linq to sql

    除了以上的基本操作,LINQ to SQL还支持排序(`OrderBy`, `OrderByDescending`)、分页(`Skip`和`Take`)、聚合函数(如`Sum`, `Average`, `Max`, `Min`)等。同时,你可以使用`Any`检查是否存在满足条件的记录,`...

    LINQ to SQL 详解

    本篇将详细讲解LINQ to SQL中的"Order By"语句。 "Order By"关键字在SQL中用于对查询结果进行排序,而在LINQ to SQL中,这一功能同样得以保留。在C#或VB.NET中,我们可以直接在查询表达式中使用"OrderBy"或...

    通过Linq操作Sql Server数据库

    - **查询数据**:Linq提供了丰富的查询表达式,如Where、Select、OrderBy等。 ```csharp var result = (from t in db.MyTable where t.Name == "SomeName" select t).ToList(); ``` - **更新数据**:直接修改对象...

Global site tag (gtag.js) - Google Analytics