LINQ使用Where擴(kuò)展方法
LINQ有很多值得學(xué)習(xí)的地方,這里我們主要介紹使用LINQ Where擴(kuò)展方法,包括介紹書寫帶Where子句的LINQ等方面。
我們除了可以如下方式書寫帶Where子句的LINQ外:
- from p in products where p.UnitsInStock > 0 && p.UnitPrice > 3.00M select p;
還可以對數(shù)組(所有實現(xiàn)了IEnumerable接口的對象都可以)的使用LINQ here擴(kuò)展方法。
把一個查詢語句寫成多個擴(kuò)展函數(shù)的方式,這其實是編譯器處理查詢語句的方法,比如下面的查詢語句:
- int[] arr = new int[] { 8, 5, 89, 3, 56, 4, 1, 58 };
- var m = from n in arr where n < 5 orderby n select n;
編譯器在編譯后,替我們產(chǎn)生的代碼等價于如下的代碼:
- IOrderedSequence m = arr.Where(delegate (int n) {
- return (n < 5);
- }).OrderBy(delegate (int n) {
- return n;
- });
下面我們來看一個使用LINQ here擴(kuò)展方法的例子:
我們有一個字符串?dāng)?shù)組,一次是0到9的英文單詞,我們查詢出這10個字符的長度比它所在數(shù)組的位置 這兩個數(shù)字比較小的英文單詞.
這個查詢可能有些繞口,你可以先看下面這些代碼:
- public static void LinqDemo01()
- {
- string[] digits = { "zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine" };- var shortDigits = digits.Where((dd, aa) => dd.Length < aa);
- Console.WriteLine("Short digits:");
- foreach (var d in shortDigits)
- Console.WriteLine("The word {0} is shorter than its value.", d);
- }
輸出結(jié)果:
- Short digits:
- The word five is shorter than its value.
- The word six is shorter than its value.
- The word seven is shorter than its value.
- The word eight is shorter than its value.
- The word nine is shorter than its value.
【編輯推薦】