Linq 本質上是 C# 等主流語言上抽象出的領域專用語言 (DSL),針對資料處理領域。它將 select、from、where、group 等 SQL 關鍵字引入 C#,透過編譯器將查詢語法轉換為原生語法樹。

假設需從書單找出價格 < 50 的書籍:
public static IList<Book> SearchBookByPrice()
{
IList<Book> books = GetBooks();
IList<Book> results = new List<Book>();
foreach (Book book in books)
if (book.Price < 50) results.Add(book);
return results;
}
public delegate bool Condition(Book book);
public static IList<Book> SearchBook(Condition condition)
{
foreach (Book book in books)
if (condition(book)) results.Add(book);
}
呼叫:SearchBook(delegate(Book b) { return b.Title == "yuyi"; });
SearchBook(book => book.Title == "yuyi");
public static IEnumerable<T> Where<T>(this IEnumerable<T> items, Func<T, bool> condition)
{
foreach (T item in items)
if (condition(item)) yield return item;
}
呼叫:books.Where(book => book.Title == "yuyi")
針對 IEnumerable<T> 擴充,一次解決所有集合類型。
.NET 3.5 System.Core.dll 內建 System.Linq.Enumerable,提供 Where、Select、OrderBy、GroupBy、Average、Distinct 等完整查詢運算子,涵蓋 SQL 所有核心功能。
這就是 Linq 橫空出世的完整演進路徑:從命令式「如何做」轉向宣告式「要什麼」,編譯器承擔轉譯重任,開發者專注業務邏輯。