<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 如何:在 C# 中編寫 LINQ 查詢 本主題演示在 C# 中編寫 LINQ 查詢的三種方式: 1. 使用查詢語法。 2. 使用方法語法。 3. 組合使用查詢語法和方法語法。 下面的示例使用前面列出的每種方式演示一些簡單的 LINQ 查詢。一般的規則是盡可能使用 (1),而在必要時使用 (2) 和 (3)。 | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | 這些查詢作用于簡單的內存中集合;但是,基本語法與 LINQ to SQL 和 LINQ to XML 中使用的語法相同。 | ### 查詢語法 編寫大多數查詢的推薦方式是使用查詢語法來創建查詢表達式。下面的示例演示了三個查詢表達式。第一個查詢表達式演示如何通過用 **where** 子句應用條件來篩選或限制結果,它返回源序列中值大于 7 或小于 3 的所有元素。第二個表達式演示如何對返回的結果進行排序。第三個表達式演示如何按照鍵對結果進行分組,此查詢可根據單詞的第一個字母返回兩個組。 ``` // Query #1. List<int> numbers = new List<int>() { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; // The query variable can also be implicitly typed by using var IEnumerable<int> filteringQuery = from num in numbers where num < 3 || num > 7 select num; // Query #2. IEnumerable<int> orderingQuery = from num in numbers where num < 3 || num > 7 orderby num ascending select num; // Query #3. string[] groupingQuery = { "carrots", "cabbage", "broccoli", "beans", "barley" }; IEnumerable<IGrouping<char, string>> queryFoodGroups = from item in groupingQuery group item by item[0]; ``` 請注意,這些查詢的類型是 [IEnumerable&lt;T&gt;](https://msdn.microsoft.com/zh-cn/library/9eekhta0.aspx)。所有這些查詢都可以使用 **var** 編寫,如下面的示例所示: var query = from num in numbers... 在上述每個示例中,直到您在 **foreach** 語句中循環訪問查詢變量時,查詢才會實際執行。有關更多信息,請參見 [Introduction to LINQ Queries (C#)](https://msdn.microsoft.com/zh-cn/library/bb397906.aspx)。 ### 方法語法 某些查詢操作必須表示為方法調用。最常見的此類方法是那些返回單一數值的方法,如 [Sum](https://msdn.microsoft.com/zh-cn/library/bb298138.aspx)、[Max](https://msdn.microsoft.com/zh-cn/library/bb335614.aspx)、[Min](https://msdn.microsoft.com/zh-cn/library/bb298087.aspx)、[Average](https://msdn.microsoft.com/zh-cn/library/bb354760.aspx) 等。這些方法在任何查詢中都必須總是最后調用,因為它們僅表示單個值,不能充當其他查詢操作的數據源。下面的示例演示查詢表達式中的方法調用: ``` List<int> numbers1 = new List<int>() { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; List<int> numbers2 = new List<int>() { 15, 14, 11, 13, 19, 18, 16, 17, 12, 10 }; // Query #4. double average = numbers1.Average(); // Query #5. IEnumerable<int> concatenationQuery = numbers1.Concat(numbers2); ``` 如果該方法具有參數,則這些參數以 [lambda](https://msdn.microsoft.com/zh-cn/library/bb397687.aspx) 表達式的形式提供,如下面的示例所示: ``` // Query #6. IEnumerable<int> largeNumbersQuery = numbers2.Where(c => c > 15); ``` 在上述查詢中,只有查詢 4 立即執行。這是因為它返回單個值,而不是一個泛型 [IEnumerable&lt;T&gt;](https://msdn.microsoft.com/zh-cn/library/9eekhta0.aspx) 集合。方法本身必須使用 **foreach** 才能計算它的值。 上述每個查詢都可以通過結合使用隱式類型化與 [var](https://msdn.microsoft.com/zh-cn/library/bb383973.aspx) 進行編寫,如下面的示例所示: ``` // var is used for convenience in these queries var average = numbers1.Average(); var concatenationQuery = numbers1.Concat(numbers2); var largeNumbersQuery = numbers2.Where(c => c > 15); ``` ### 混合的查詢和方法語法 此示例演示如何對查詢子句的結果使用方法語法。只需將查詢表達式括在括號內,然后應用點運算符并調用此方法。在下面的示例中,查詢 7 返回其值在 3 和 7 之間的數字個數。但是,通常更好的做法是使用另一個變量來存儲方法調用的結果。這樣就不太容易將查詢本身與查詢結果相混淆。 ``` // Query #7. // Using a query expression with method syntax int numCount1 = (from num in numbers1 where num < 3 || num > 7 select num).Count(); // Better: Create a new variable to store // the method call result IEnumerable<int> numbersQuery = from num in numbers1 where num < 3 || num > 7 select num; int numCount2 = numbersQuery.Count(); ``` 由于查詢 7 返回單個值而不是一個集合,因此該查詢立即執行。 上述查詢可以通過結合使用隱式類型化與 **var** 進行編寫,如下所示: ``` var numCount = (from num in numbers... ``` 它可以按如下方式使用方法語法進行編寫: ``` var numCount = numbers.Where(n => n < 3 || n > 7).Count(); ``` 它可以按如下方式使用顯式類型化進行編寫: ``` int numCount = numbers.Where(n => n < 3 || n > 7).Count(); ``` ## 請參閱 [LINQ (Language-Integrated Query)](https://msdn.microsoft.com/zh-cn/library/bb397926.aspx) [Walkthrough: Writing Queries in C# (LINQ)](https://msdn.microsoft.com/zh-cn/library/bb397900.aspx) [LINQ 查詢表達式(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/bb397676.aspx) [where 子句(C# 參考)](https://msdn.microsoft.com/zh-cn/library/bb311043.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看