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

LINQ to SQL 分組與存在性檢查完整指南(7):Group By/Having、Any/All/Contains 對應 SQL 解析

     編輯:關於ASP.NET

深入解析 LINQ to SQL 的分組查詢與存在性檢查運算子對應 SQL 行為。

Group By / Having

基本分組

var q = from p in db.Products
        group p by p.CategoryID into g
        select g;

into g 重新命名分組結果,後續只能存取 g.Key 與彙總函數。

分組投影

var q = from p in db.Products
        group p by p.CategoryID into g
        select new { CategoryID = g.Key, Count = g.Count(), MaxPrice = g.Max(p => p.UnitPrice) };

存在性檢查運算子對應

運算子SQL 對應說明
Any()EXISTS子查詢至少一筆
All()NOT EXISTS (反向)所有符合條件
Contains()IN集合包含判斷
In (陣列)INnew[] {1,2,3}.Contains(x)

範例:有訂單的客戶

var q = from c in db.Customers
        where c.Orders.Any()
        select c;

範例:特定類別的產品


int[] catIds = {1,2,3};
var q = from p in db.Products
        where catIds.Contains(p.CategoryID)
        select p;

善用 Any/Contains 可產生高效的 EXISTS/IN SQL,避免 JOIN 產生重複資料列。

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