首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

LINQ to SQL Null 語意與 DateTime 方法:可為 Null 型別處理與日期查詢

     編輯:關於.NET

Null 語意比較

查詢 ReportsToEmployee == null(不屬於任何主管的員工)有三種寫法:

// 1. 直接比較 null
var q1 = from e in db.Employees where e.ReportsToEmployee == null select e;

// 2. 使用 Nullable<T>.HasValue
var q2 = from e in db.Employees where !e.ReportsTo.HasValue select e;

// 3. 取得非 Null 時的值
var q3 = from e in db.Employees
         where e.ReportsTo.HasValue
         select new { e.FirstName, e.LastName, ReportsTo = e.ReportsTo.Value };

三者生成 SQL 邏輯相同,皆為 WHERE ReportsTo IS NULL 或 IS NOT NULL。

DateTime 屬性查詢

LINQ to SQL 支援 Year、Month、Day、Hour、Minute、Second、Millisecond、DayOfWeek、DayOfYear 等屬性轉譯。

型別範圍與精度差異

型別最小值最大值精度
System.DateTime0001-01-019999-12-31100 奈秒
T-SQL DateTime1753-01-019999-12-313.33 毫秒
T-SQL SmallDateTime1900-01-012079-06-061 分鐘

.NET DateTime 範圍較大、精度較高;從 SQL 讀取不會遺失精度,但寫入時可能遭截斷。時區資訊 SQL Server 不支援,需自行轉換。

日期查詢範例

// 1997 年的訂單
var q1 = from o in db.Orders where o.OrderDate.Value.Year == 1997 select o;

// 12 月的訂單
var q2 = from o in db.Orders where o.OrderDate.Value.Month == 12 select o;

// 每月 31 號的訂單
var q3 = from o in db.Orders where o.OrderDate.Value.Day == 31 select o;

注意:OrderDate 為 Nullable<DateTime>,需存取 .Value 才能使用日期屬性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved