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

LINQ 基本查詢操作完整指南:從資料源到投影

     編輯:關於.NET

取得資料源

LINQ 查詢第一步指定資料源。from 子句引入資料源 (customers) 與範圍變數 (cust):

// queryAllCustomers 是 IEnumerable<Customer>
var queryAllCustomers = from cust in customers select cust;

範圍變數類似 foreach 迭代變數,但查詢表達式中不實際迭代。編譯器可推斷類型,無需顯式指定。其他範圍變數可由 let 子句引入。

篩選

最常用操作:布林運算式篩選器,where 子句指定排除元素:

var queryLondonCustomers = from cust in customers
                           where cust.City == "London"
                           select cust;

多條件組合:

where cust.City == "London" && cust.Name == "Devon"  // AND
where cust.City == "London" || cust.City == "Paris"  // OR

排序

orderby 子句依預設比較器排序:

var queryLondonCustomers3 = from cust in customers
                            where cust.City == "London"
                            orderby cust.Name ascending
                            select cust;

降序:orderby ... descending。

分組

group 子句依指定鍵分組:

// queryCustomersByCity 是 IEnumerable<IGrouping<string, Customer>>
var queryCustomersByCity = from cust in customers group cust by cust.City;

foreach (var customerGroup in queryCustomersByCity)
{
    Console.WriteLine(customerGroup.Key);
    foreach (Customer customer in customerGroup)
        Console.WriteLine(" {0}", customer.Name);
}

結果為列表的列表,每個元素含 Key 與分組元素列表。巢狀 foreach 迭代。

into 關鍵字建立識別符進一步查詢分組結果:

var custQuery = from cust in customers
                group cust by cust.City into custGroup
                where custGroup.Count() > 2
                orderby custGroup.Key
                select custGroup;

聯接

join 子句建立資料源間未顯式建模的關聯。LINQ 對物件集合而非直接對資料庫表運作。因外鍵在物件模型中表現為包含項集合屬性 (如 Customer.Orders),較少需顯式 join,可用點標記法存取。

選擇 (投影)

select 子句產生查詢結果,指定回傳元素「形狀」或類型:整個物件、單一成員、子集、或全新計算結果類型。產生非來源元素副本的操作稱為「投影」,是 LINQ 強大轉換資料功能。

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