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

LINQ to SQL 過濾查詢入門:Where 操作符三大形式詳解

     編輯:關於.NET

Where 核心作用

  • 相當於 SQL WHERE 子句
  • 延遲執行,組合查詢時不立即查庫
  • 支持三種主要形式

1. 簡單形式

// 倫敦客戶
var q = from c in db.Customers
        where c.City == "London"
        select c;

// 1994 年後入職員工
var q = from e in db.Employees
        where e.HireDate >= new DateTime(1994, 1, 1)
        select e;

2. 關系條件形式 (多條件組合)

// 庫存 ≤ 訂貨點 且 未斷貨
var q = from p in db.Products
        where p.UnitsInStock <= p.ReorderLevel && !p.Discontinued
        select p;

// 單價 > 10 或 已停產
var q = from p in db.Products
        where p.UnitPrice > 10m || p.Discontinued
        select p;

// 鏈式 Where (等價於 AND)
var q = db.Products
    .Where(p => p.UnitPrice > 10m)
    .Where(p => p.Discontinued);

3. First() 形式 (單元素獲取 → TOP 1)

// 第一個發貨商
Shipper shipper = db.Shippers.First();

// 指定客戶
Customer cust = db.Customers.First(c => c.CustomerID == "BONAP");

// 條件匹配第一筆
Order ord = db.Orders.First(o => o.Freight > 10.00M);

First() 立即執行,生成 SELECT TOP 1 ...。無匹配拋異常,可用 FirstOrDefault() 返回 null。

Lambda vs 查詢語法

兩者等價,Lambda 更適合鏈式調用 (Where().Where().Select()),查詢語法更接近 SQL 閱讀習慣。

常見陷阱

  • 字符串比較區分大小寫 (資料庫排序規則決定)
  • 日期時間精度問題 (建議用範圍 >= start && < end)
  • 對導航屬性篩選會產生 JOIN,注意性能
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved