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

Hxj.Data 子查詢支援:SubQueryEqual/NotEqual/Less/Greater/In/NotIn 強型別建構

     編輯:關於ASP.NET

子查詢方法對應 SQL 操作子

方法SQL
SubQueryEqual=
SubQueryNotEqual<>
SubQueryLess<
SubQueryLessOrEqual<=
SubQueryGreater>
SubQueryGreaterOrEqual>=
SubQueryInIN
SubQueryNotInNOT IN

範例:CategoryID 等於子查詢單一值

DbSession.Default.From()
    .Where(Products._.CategoryID.SubQueryEqual(
        DbSession.Default.From()
            .Where(Categories._.CategoryName == "Produce")
            .Select(Categories._.CategoryID)
            .Top(1)))
    .ToList();

SQL:SELECT * FROM [Products] WHERE [Products].[CategoryID] = (SELECT TOP 1 [Categories].[CategoryID] FROM [Categories] WHERE [Categories].[CategoryName] = @p0)

範例:CategoryID NOT IN 子查詢集合

DbSession.Default.From()
    .Where(Products._.CategoryID.SubQueryNotIn(
        DbSession.Default.From()
            .Where(Categories._.CategoryName == "Produce")
            .Select(Categories._.CategoryID)))
    .ToList();

SQL:SELECT * FROM [Products] WHERE [Products].[CategoryID] NOT IN (SELECT [Categories].[CategoryID] FROM [Categories] WHERE [Categories].[CategoryName] = @p0)

關鍵優勢

  • 強型別:子查詢 Select 欄位型別必須與外層比較欄位相容,編譯期檢查。
  • 參數化:子查詢內部參數自動參數化,防注入。
  • 可組合:子查詢本身可包含 Join、Where、OrderBy、Top、Page 等完整查詢能力。
  • 零字串:完全在物件模型建構,重構安全。

適用場景

  • 動態篩選條件來源於另一張表(如:熱銷分類、VIP 客戶清單)。
  • 替代 Join 以簡化邏輯(如:NOT IN 子查詢常比 LEFT JOIN ... WHERE IS NULL 更易讀)。
  • 標量子查詢作為欄位值(搭配 AddSelect,見第 28 篇)。

子查詢支援讓 Hxj.Data 能表達更豐富的關聯邏輯,同時保持 ORM 的型別安全與可組合性。

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