LINQ to SQL语句之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方法。但是,SQLServer和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类型相比,前者范围更 大、精度更高。因此来自SQLServer的数据用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 日下的订单。

语句描述:从一个上下文提取实体,并使用 Attach 和 AttachAll 附加来自其他上下文的实体,然后更新这两个实体,删除一个实体,添加另一个实体。更改被提交到数据库。

这是我所学到的一些知识,在此分享给大家,希望可以帮助到你们。

以上就是我的分享,新手上道,请多多指教。如果有更好的方法或不懂得地方欢迎在评论区教导和提问喔!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值