閱讀72 返回首頁    go 汽車大全


LINQ 查詢語法

        在LINQ中,數據源和查詢結果實際上都是IEnumerable<T>或IQueryable<T>類型對象
          LINQ主要的功能就是實現查詢,LINQ查詢存在以下兩種形式。
          ⑴ Method Synta (查詢方法方式):主要利用 System.Linq.Enumerable 類中定義的擴展方法和Lambda 表達式方式進行查詢。它提供了一種增強了程序的可讀性的語法,易讀易寫,寫時不容易出錯。Visual Studio 2010為查詢語法提供了完全的智能提示和編譯時檢查。
例如:
 int[] numbers = new int[] { 6, 4, 3, 2, 9, 1, 7, 8, 5 };  //獲取數據源(此處由一個數組充當);  
            var numQuery = numbers//numQuery是查詢變量,通過右邊的查詢表達式對查詢變量賦值;  
                          .Where(p => p % 2 == 0)    //查詢numbers中能被2整除的元素  
                          .OrderByDescending(p => p)   //查詢結果按照降序排列  
                         .Select(p => p);    //列出所有符合條件的元素

          ⑵ Query Syntax(查詢語句方式):一種更接近 SQL 語法的查詢方式,可讀性更好。示例代碼如下:
int[] numbers = new int[] { 6, 4, 3, 2, 9, 1, 7, 8, 5 };	//獲取數據源(此處由一個數組充當);
var numQuery = from number in numbers	//右邊的查詢表達式對numQuery查詢變量賦值
where number % 2 == 0	//查詢numbers中能被2整除的元素
orderby number descending	//查詢結果按照降序排列
select number;	//列出所有符合條件的元素

        查詢方法和查詢語法兩者的執行效果完全一樣,上麵示例中,數據源是一個數組,隱式支持泛型IEnumerable(T)接口,因此可用LINQ對該數組進行查詢。
        “查詢表達式”是用查詢語法表示的查詢,由一組用類似於 SQL 或 XQuery 的聲明性語法編寫的子句組成。每個子句又包含一個或多個 C# 表達式,而這些表達式本身又可能是查詢表達式或包含查詢的表達式。查詢表達式必須以 from子句開頭,並且必須以 select 或 group 子句結尾。在第一個 from 子句和最後一個 select 或 group 子句之間,查詢表達式可以包含一個或多個下列可選子句: where、 orderby、 join、 let 和附加的 from 子句。還可以使用 into 關鍵字使 join 或 group 子句的結果充當同一查詢表達式中附加查詢子句的源。
        查詢子句簡介如下:
        from 子句       指定數據源和範圍變量(類似於迭代變量)。
        where 子句    根據一個或多個由邏輯“與”和邏輯“或”運算符(&& 或 ||)分隔的布爾表達式篩選源元素。
        select 子句    指定當執行查詢時返回的序列中的元素將具有的類型和形式。
        group 子句     按照指定的鍵值對查詢結果進行分組。
        into子句          提供一個標識符,以便將 group、join 或 select 子句的結果存儲到新的標識符中。
        orderby子句  基於元素類型的默認比較器按升序或降序對查詢結果進行排序。
        join 子句         基於兩個指定匹配條件之間的相等比較來聯接兩個數據源。
        let 子句           引入一個用於存儲查詢表達式中的子表達式結果的範圍變量。
        LINQ 查詢操作都由以下三個不同的操作組成:獲取數據源、創建查詢和執行查詢。

從數據集中查詢出Id列中值為"rr"數據行,返回datarow的集合:
 Method Synta寫法:
 var rows = this.ds.Tables[0].AsEnumerable().Where(dataRow => dataRow["Id"].ToString() == "rr").
                        Select(dataRow => dataRow).ToList(); 
Query Syntax寫法:
var rows = (from dataRow in this.ds.Tables[0].AsEnumerable()
                               where dataRow["Id"].ToString() ==  "rr"
                                select dataRow).ToList();

        詳細講解參見:https://download.csdn.net/detail/xunzaosiyecao/8268915
        MSDN:點擊打開鏈接


最後更新:2017-04-03 12:54:12

  上一篇:go 關於DateTime的轉換
  下一篇:go Oracle 如何查看建表時間?