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

LINQ to SQL语句(14)之Null语义和DateTime

阅读更多

Null语义

说明:下面第一个例子说明查询ReportsToEmployee为null的雇员。第二个例子使用Nullable<T>.HasValue查询雇员,其结果与第一个例子相同。在第三个例子中,使用Nullable<T>.Value来返回ReportsToEmployee不为null的雇员的ReportsTo的值。

1.Null

查找不隶属于另一个雇员的所有雇员:

var q =
    from e in db.Employees
    where e.ReportsToEmployee == null
    select e;

2.Nullable<T>.HasValue

查找不隶属于另一个雇员的所有雇员:

var q =
    from e in db.Employees
    where !e.ReportsTo.HasValue
    select e;

3.Nullable<T>.Value

返回前者的EmployeeID 编号。请注意.Value 为可选:

var q =
    from e in db.Employees
    where e.ReportsTo.HasValue
    select new
    {
        e.FirstName,
        e.LastName,
        ReportsTo = e.ReportsTo.Value
    };

日期函数

LINQ to SQL支持以下DateTime方法。但是,SQL Server和CLR的DateTime类型在范围和计时周期精度上不同,如下表。

类型

最小值

最大值

计时周期

System.DateTime

0001 年 1 月 1 日

9999 年 12 月 31 日

100 毫微秒(0.0000001 秒)

T-SQL DateTime

1753 年 1 月 1 日

9999 年 12 月 31 日

3.33… 毫秒(0.0033333 秒)

T-SQL SmallDateTime

1900 年 1 月 1 日

2079 年 6 月 6 日

1 分钟(60 秒)

CLR DateTime 类型与SQL Server类型相比,前者范围更大、精度更高。因此来自SQL Server的数据用CLR类型表示时,绝不会损失量值或精度。但如果反过来的话,则范围可能会减小,精度可能会降低;SQL Server日期不存在TimeZone概念,而在CLR中支持这个功能。
我们在LINQ to SQL查询使用以当地时间、UTC 或固定时间要自己执行转换。

下面用三个实例说明一下。

1.DateTime.Year

var q =
    from o in db.Orders
    where o.OrderDate.Value.Year == 1997
    select o;

语句描述:这个例子使用DateTime 的Year 属性查找1997 年下的订单。

2.DateTime.Month

var q =
    from o in db.Orders
    where o.OrderDate.Value.Month == 12
    select o;

语句描述:这个例子使用DateTime的Month属性查找十二月下的订单。

3.DateTime.Day

var q =
    from o in db.Orders
    where o.OrderDate.Value.Day == 31
    select o;

语句描述:这个例子使用DateTime的Day属性查找某月 31 日下的订单。

分享到:
评论

相关推荐

    查看LINQ生成SQL语句的几种方法

    在实际开发中,有时我们需要了解LINQ查询是如何转换为SQL语句的,以便于调试和优化性能。以下将详细介绍几种查看LINQ生成SQL语句的方法。 1. **Debug.WriteLine()** 在使用LINQ查询时,可以利用`Debug.WriteLine()...

    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的工具

    LINQ to SQL语句之Join和Order By

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

    LINQ to SQL语句(10)之Insert

    总结起来,"LINQ to SQL语句(10)之Insert"主要涉及如何通过.NET的LINQ技术便捷地向数据库插入新记录,包括创建DataContext,操作表对象,创建并提交新的实体实例,以及处理可能的异常和验证。理解并熟练掌握这些概念...

    LINQ to SQL语句(19)之ADO.NET与LINQ to SQL

    LINQ to SQL是一个轻量级的对象关系映射(ORM)工具,它允许开发人员将数据库模式映射到.NET类,然后使用熟悉的C#或VB.NET语言结构直接对这些对象进行查询,而无需编写SQL语句。 在LINQ to SQL中,DataContext是...

    LINQ to SQL语句(11)之Update

    - **批量更新**:虽然LINQ to SQL默认不支持批量更新,但可以通过构造多个更新语句或者利用存储过程来实现。 **5. 避免常见的更新问题** - **跟踪更改**:DataContext跟踪每个加载的实体状态,如果未加载实体就...

    LINQ To SQL实现分页效果源码

    总结来说,LINQ to SQL的分页功能结合了强大的查询表达能力和数据库操作的便利性,为.NET开发者提供了高效的数据访问解决方案。通过理解和实践这些步骤,你可以在你的应用程序中实现高效的分页功能。

    一个简单的linq to sql例子

    首先,我们需要包含必要的命名空间,如`System.Linq`和`System.Data.Linq`,它们提供了 LINQ to SQL 所需的类和方法。接下来,我们需要创建一个DataContext对象,它是LINQ to SQL与数据库交互的基础。DataContext会...

    LINQ体验——LINQ to SQL语句之Insert/Update/Delete操作

    "LINQ体验——LINQ to SQL语句之Insert/Update/Delete操作" 在本篇文章中,我们将继续讨论LINQ to SQL语句,重点介绍Insert/Update/Delete操作,这些操作在我们的程序中是最常用的。下面,我们将通过多个示例来详细...

    Linq to Sql语句详解

    Linq to Sql语句详解,讲述了Linq to Sql语法详解,包括Linq to sql的动态语句,和继承的应用。还有在分层结构情况下的应用。

    LINQ to SQL语句(20)之存储过程

    【LINQ to SQL语句(20)之存储过程】 LINQ to SQL 是 .NET Framework 提供的一种数据访问技术,它允许开发人员使用 C# 或 VB.NET 语言直接对关系数据库进行查询,将 SQL 查询语句转化为强类型对象。在这个主题中,...

    LINQ to SQL.rar

    提供的"LINQ体验系列文章"和"LINQ to SQL公共基类"很可能是关于LINQ to SQL的基础教程和示例代码,包括如何创建和配置DataContext,如何定义和使用实体类,以及如何编写查询等。通过阅读这些资料,开发者可以深入...

    LINQ to SQL语句.docx

    下面我们将详细介绍 Linq to SQL 语句的使用方法和相关知识点。 一、 Linq to SQL 语句(1)之 Where Where 子句是 Linq to SQL 语句中最基本的子句之一,它用于筛选数据记录。Where 子句可以使用多种形式,包括简单...

    Linq to sql 和 Linq to Entity 高级查询

    实现linq多个查询条件连接功能(支持linq to sql 和linq to entity)。 按多个指定属性排序功能。 不同参数的lamdba表达式条件间的转换功能。

    LINQ to SQL语句(12)之Delete和使用Attach

    这样,LINQ to SQL会自动生成对应的DELETE SQL语句并执行。例如: ```csharp using (var db = new MyDataContext()) { var itemToRemove = db.Items.First(i =&gt; i.Id == 1); db.Items.Remove(itemToRemove); db....

    Linq To Sql进阶系列

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

    LINQ to SQL可视化调试工具

    LINQ to SQL是.NET Framework下的一个ORM(Object-Relational Mapping)框架,它允许开发人员通过C#或VB.NET直接操作SQL Server数据库,而无需编写SQL语句。这项技术极大地简化了数据库操作,并提高了代码的可读性和可...

    LINQ to SQL语句(24)之视图

    值得注意的是,由于视图是基于查询的,所以在更新或删除视图数据时,LINQ to SQL会尝试生成相应的UPDATE或DELETE SQL语句,但并非所有视图都支持这些操作。如果视图是只读的,或者由于其定义(如包含聚合函数、GROUP...

Global site tag (gtag.js) - Google Analytics