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

C# 3.0 LINQ 查詢語法完整入門

     編輯:關於C#

LINQ 查詢語法基礎

LINQ (Language Integrated Query) 提供類 SQL 的宣告式查詢語法,核心關鍵字:from、where、orderby、select、group、into。

基本查詢範例

int[] numbers = { 8, 5, 89, 3, 56, 4, 1, 58 };

// 查詢小於 5 的數字並排序
var query = from n in numbers
            where n < 5
            orderby n
            select n;

foreach (var n in query) Console.WriteLine(n);
// 輸出: 1, 3, 4

為什麼 from 在前、select 在後?

為了支援 Visual Studio IntelliSense 智慧感知。若 select 在前,編譯器在輸入 select n. 時無法推斷 n 的型別,無法提供屬性提示。將 from n in numbers 寫在前,型別推斷即可在 select 時生效。VB 9 早期曾嘗試 Select 在前,後統一改為 From 領先。

進階:Group By 與 Into

string[] languages = { "Java", "C#", "C++", "Delphi", "VB.NET", "VC.NET", "C++ Builder", "Kylix", "Perl", "Python" };

// 依字串長度分群,群組按長度遞減排序
var query = from lang in languages
            orderby lang
            group lang by lang.Length into lengthGroups
            orderby lengthGroups.Key descending
            select lengthGroups;

foreach (var group in query)
{
    Console.WriteLine($"長度 {group.Key}:");
    foreach (var lang in group) Console.WriteLine($"  {lang}");
}

關鍵字解析

關鍵字用途
from指定資料來源與範圍變數
where篩選條件 (lambda: n => n < 5)
orderby排序,可 ascending/descending
select投影結果形狀
group ... by分群,結果為 IGrouping<TKey, TElement>
into將前一查詢結果作為後續查詢的產生器 (配合 group/join/select)
let引入查詢範圍內的暫時變數
join內部聯結兩個序列

LINQ Group By vs SQL Group By

SQL 受限於二維表格結構,GROUP BY 僅能搭配彙總函式;LINQ group by 產生階層式群組物件,保留原始元素,支援更靈活的後續查詢 (如對群組內元素再排序、篩選)。

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