<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      101個LINQ例子

      101 LINQ Samples

      說明:本文摘抄自Microsoft的MSDN網站,因為原文不方便快速閱讀和學習,故此調整如下。本文所有權利歸Microsoft公司所有。如果您覺得本文侵犯了您的著作權,請來信告知,我將即時改正!多謝!

      所有的代碼運行結果請點擊代碼上的鏈接,到MSDN網站去看。


      Restriction Operators
      • Where - Simple 1
      • public void Linq1() {
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            var lowNums =
                from n in numbers
                where n < 5
                select n;
            Console.WriteLine("Numbers < 5:");
            foreach (var x in lowNums) {
                Console.WriteLine(x);
            }
        }

      • Where - Simple 2
      • public void Linq2() {
            List products = GetProductList();
            var soldOutProducts =
                from p in products
                where p.UnitsInStock == 0
                select p;
            Console.WriteLine("Sold out products:");
            foreach (var product in soldOutProducts) {
                Console.WriteLine("{0} is sold out!", product.ProductName);
            }
        }

      • Where - Simple 3
      • public void Linq3() {
            List products = GetProductList();
            var expensiveInStockProducts =
                from p in products
                where p.UnitsInStock > 0 && p.UnitPrice > 3.00M
                select p;
            Console.WriteLine("In-stock products that cost more than 3.00:");
            foreach (var product in expensiveInStockProducts) {
                Console.WriteLine("{0} is in stock and costs more than 3.00.", product.ProductName);
            }
        }

      • Where - Drilldown
      • public void Linq4() {
            List customers = GetCustomerList();
            var waCustomers =
                from c in customers
                where c.Region == "WA"
                select c;
            Console.WriteLine("Customers from Washington and their orders:");
            foreach (var customer in waCustomers) {
                Console.WriteLine("Customer {0}: {1}", customer.CustomerID, customer.CompanyName);
                foreach (var order in customer.Orders) {
                    Console.WriteLine(" Order {0}: {1}", order.OrderID, order.OrderDate);
                }
            }
        }

      • Where - Indexed
      • public void Linq5() {
            string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
            var shortDigits = digits.Where((digit, index) => digit.Length < index);
            Console.WriteLine("Short digits:");
            foreach (var d in shortDigits) {
                Console.WriteLine("The word {0} is shorter than its value.", d);
            }
        }

      Projection Operators
      • Select - Simple 1
      • public void Linq6() {
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            var numsPlusOne =
                from n in numbers
                select n + 1;
            Console.WriteLine("Numbers + 1:");
            foreach (var i in numsPlusOne) {
                Console.WriteLine(i);
            }
        }

      • Select - Simple 2
      • public void Linq7() {
            List products = GetProductList();
            var productNames =
                from p in products
                select p.ProductName;
            Console.WriteLine("Product Names:");
            foreach (var productName in productNames) {
                Console.WriteLine(productName);
            }
        }

      • Select - Transformation
      • public void Linq8() {
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            string[] strings = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
            var textNums =
                from n in numbers
                select strings[n];
            Console.WriteLine("Number strings:");
            foreach (var s in textNums) {
                Console.WriteLine(s);
            }        
        }

      • Select - Anonymous Types 1
      • public void Linq9() {
            string[] words = { "aPPLE", "BlUeBeRrY", "cHeRry" };
            var upperLowerWords =
                from w in words
                select new {Upper = w.ToUpper(), Lower = w.ToLower()};
            foreach (var ul in upperLowerWords) {
                Console.WriteLine("Uppercase: {0}, Lowercase: {1}", ul.Upper, ul.Lower);
            }
        }

      • Select - Anonymous Types 2
      • public void Linq10() {
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            string[] strings = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
            var digitOddEvens =
                from n in numbers
                select new {Digit = strings[n], Even = (n % 2 == 0)};
            foreach (var d in digitOddEvens) {
                Console.WriteLine("The digit {0} is {1}.", d.Digit, d.Even ? "even" : "odd");
            }
        }

      • Select - Anonymous Types 3
      • public void Linq11() {
            List products = GetProductList();
            var productInfos =
                from p in products
                select new {p.ProductName, p.Category, Price = p.UnitPrice};
            Console.WriteLine("Product Info:");
            foreach (var productInfo in productInfos) {
                Console.WriteLine("{0} is in the category {1} and costs {2} per unit.", productInfo.ProductName, productInfo.Category, productInfo.Price);
            }
        }

      • Select - Indexed
      • public void Linq12() {
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            var numsInPlace = numbers.Select((num, index) => new {Num = num, InPlace = (num == index)});
            Console.WriteLine("Number: In-place?");
            foreach (var n in numsInPlace) {
                Console.WriteLine("{0}: {1}", n.Num, n.InPlace);
            }
        }

      • Select - Filtered
      • public void Linq13() {
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
            var lowNums =
                from n in numbers
                where n < 5
                select digits[n];
            Console.WriteLine("Numbers < 5:");
            foreach (var num in lowNums) {
                Console.WriteLine(num);
            }    
        }

      • SelectMany - Compound from 1
      • public void Linq14() {
            int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
            int[] numbersB = { 1, 3, 5, 7, 8 };
            var pairs =
                from a in numbersA,
                        b in numbersB
                where a < b
                select new {a, b};
            Console.WriteLine("Pairs where a < b:");
            foreach (var pair in pairs) {
                Console.WriteLine("{0} is less than {1}", pair.a, pair.b);
            }
        }

      • SelectMany - Compound from 2
      • public void Linq15() {
            List customers = GetCustomerList();
            var orders =
                from c in customers,
                        o in c.Orders
                where o.Total < 500.00M
                select new {c.CustomerID, o.OrderID, o.Total};
            ObjectDumper.Write(orders);
        }

      • SelectMany - Compound from 3
      • public void Linq16() {
            List customers = GetCustomerList();
            var orders =
                from c in customers,
                        o in c.Orders
                where o.OrderDate >= new DateTime(1998, 1, 1)
                select new {c.CustomerID, o.OrderID, o.OrderDate};
            ObjectDumper.Write(orders);
        }

      • SelectMany - from Assignment
      • public void Linq17() {
            List customers = GetCustomerList();
            var orders =
                from c in customers,
                        o in c.Orders,
                        total = o.Total
                where total >= 2000.0M
                select new {c.CustomerID, o.OrderID, total};
            ObjectDumper.Write(orders);
        }

      • SelectMany - Multiple from
      • public void Linq18() {
            List customers = GetCustomerList();
            DateTime cutoffDate = new DateTime(1997, 1, 1);
            var orders =
                from c in customers
                where c.Region == "WA"
                from o in c.Orders
                where o.OrderDate >= cutoffDate
                select new {c.CustomerID, o.OrderID};
            ObjectDumper.Write(orders);
        }

      • SelectMany - Indexed
      • public void Linq19() {
            List customers = GetCustomerList();
            var customerOrders =
                customers.SelectMany(
                    (cust, custIndex) =>
                    cust.Orders.Select(o => "Customer #" + (custIndex + 1) +
                                            " has an order with OrderID " + o.OrderID) );
            ObjectDumper.Write(customerOrders);
        }

      Partitioning Operators
      • Take - Simple
      • public void Linq20() {
                    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
                    var first3Numbers = numbers.Take(3);
                    Console.WriteLine("First 3 numbers:");
                    foreach (var n in first3Numbers) {
                        Console.WriteLine(n);
                    }
                }

      • Take - Nested
      • public void Linq21() {
                    List<Customer> customers = GetCustomerList();
                    var first3WAOrders = (
                        from c in customers
                        from o in c.Orders
                        where c.Region == "WA"
                        select new {c.CustomerID, o.OrderID, o.OrderDate} )
                        .Take(3);
                    Console.WriteLine("First 3 orders in WA:");
                    foreach (var order in first3WAOrders) {
                        ObjectDumper.Write(order);
                    }
                }

      • Skip - Simple
      • public void Linq22() {
                    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
                    var allButFirst4Numbers = numbers.Skip(4);
                    Console.WriteLine("All but first 4 numbers:");
                    foreach (var n in allButFirst4Numbers) {
                        Console.WriteLine(n);
                    }
                }

      • Skip - Nested
      • public void Linq23() {
                    List<Customer> customers = GetCustomerList();
                    var waOrders =
                        from c in customers
                        from o in c.Orders
                        where c.Region == "WA"
                        select new {c.CustomerID, o.OrderID, o.OrderDate};
                    var allButFirst2Orders = waOrders.Skip(2);
                    Console.WriteLine("All but first 2 orders in WA:");
                    foreach (var order in allButFirst2Orders) {
                        ObjectDumper.Write(order);
                    }
                }

      • TakeWhile - Simple
      • public void Linq24() {
                    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
                    var firstNumbersLessThan6 = numbers.TakeWhile(n => n < 6);
                    Console.WriteLine("First numbers less than 6:");
                    foreach (var n in firstNumbersLessThan6) {
                        Console.WriteLine(n);
                    }
                }

      • SkipWhile - Simple
      • public void Linq26() {
                    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
                    var allButFirst3Numbers = numbers.SkipWhile(n => n % 3 != 0);
                    Console.WriteLine("All elements starting from first element divisible by 3:");
                    foreach (var n in allButFirst3Numbers) {
                        Console.WriteLine(n);
                    }
                }

      • SkipWhile - Indexed
      • public void Linq27() {
                    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
                    var laterNumbers = numbers.SkipWhile((n, index) => n >= index);
                    Console.WriteLine("All elements starting from first element less than its position:");
                    foreach (var n in laterNumbers) {
                        Console.WriteLine(n);
                    }
                }

      Ordering Operators
      • OrderBy - Simple 1
      • publicvoid Linq28() {
            string[] words = { "cherry", "apple", "blueberry" };
            
            var sortedWords =
                from w in words
                orderby w
                select w;
            
            Console.WriteLine("The sorted list of words:");
            foreach (var w in sortedWords) {
                Console.WriteLine(w);
            }
        }
        
      • OrderBy - Simple 2
      • public void Linq29() {
            string[] words = { "cherry", "apple", "blueberry" };
            var sortedWords =
                from w in words
                orderby w.Length
                select w;
            Console.WriteLine("The sorted list of words (by length):");
            foreach (var w in sortedWords) {
                Console.WriteLine(w);
            }
        }

      • OrderBy - Simple 3
      • public void Linq30() {
            List products = GetProductList();
            var sortedProducts =
                from p in products
                orderby p.ProductName
                select p;
            ObjectDumper.Write(sortedProducts);
        }

      • OrderBy - Comparer
      • public class CaseInsensitiveComparer : IComparer<string>
        {
            public int Compare(string x, string y)
            {
                return string.Compare(x, y, true);
            }
        }
        public void Linq31() {
            string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry"};
            var sortedWords = words.OrderBy(a => a, new CaseInsensitiveComparer());
            ObjectDumper.Write(sortedWords);
        }

      • OrderByDescending - Simple 1
      • public void Linq32() {
            double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };
            var sortedDoubles =
                from d in doubles
                orderby d descending
                select d;
            Console.WriteLine("The doubles from highest to lowest:");
            foreach (var d in sortedDoubles) {
                Console.WriteLine(d);
            }
        }

      • OrderByDescending - Simple 2
      • public void Linq33() {
            List products = GetProductList();
            var sortedProducts =
                from p in products
                orderby p.UnitsInStock descending
                select p;
            ObjectDumper.Write(sortedProducts);
        }

      • OrderByDescending - Comparer
      • public class CaseInsensitiveComparer : IComparerspan class="qs-keyword">string>
        {
            publicint Compare(string x, string y)
            {
                returnstring.Compare(x, y, true);
            }
        }
        
        publicvoid Linq34() {
            string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry"};
            
            var sortedWords = words.OrderByDescending(a => a, new CaseInsensitiveComparer());
                
            ObjectDumper.Write(sortedWords);
        }
        
      • ThenBy - Simple
      • publicvoid Linq35() {
            string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
        
            var sortedDigits =
                from d in digits 
                orderby d.Length, d
                select d;
        
            Console.WriteLine("Sorted digits:");
            foreach (var d in sortedDigits) {
                Console.WriteLine(d);
            }
        }
        
      • ThenBy - Comparer
      • public class CaseInsensitiveComparer : IComparerspan class="qs-keyword">string>
        {
            publicint Compare(string x, string y)
            {
                returnstring.Compare(x, y, true);
            }
        }
        
        publicvoid Linq36() {
            string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry"};
            
            var sortedWords =
                words.OrderBy(a => a.Length)
                        .ThenBy(a => a, new CaseInsensitiveComparer());
                
            ObjectDumper.Write(sortedWords);
        }
        
      • ThenByDescending - Simple
      • publicvoid Linq37() {
            List products = GetProductList();var sortedProducts =
                from p in products
                orderby p.Category, p.UnitPrice descendingselect p;
        
            ObjectDumper.Write(sortedProducts);
        }
        
      • ThenByDescending - Comparer
      • public class CaseInsensitiveComparer : IComparerspan class="qs-keyword">string>
        {
            publicint Compare(string x, string y)
            {
                returnstring.Compare(x, y, true);
            }
        }
        
        publicvoid Linq38() {
            string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry"};
            
            var sortedWords =
                words.OrderBy(a => a.Length)
                        .ThenByDescending(a => a, new CaseInsensitiveComparer());
                
            ObjectDumper.Write(sortedWords);
        }
        
      • Reverse
      • publicvoid Linq39() {
            string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
            
            var reversedIDigits = (
                from d in digits
                where d[1] == 'i'
                select d)
                .Reverse();
            
            Console.WriteLine("A backwards list of the digits with a second character of 'i':");
            foreach (var d in reversedIDigits) {
                Console.WriteLine(d);
            }             
        }
        
      Grouping Operators
      • GroupBy - Simple 1
      • public void Linq40() {
                    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
                    var numberGroups =
                        from n in numbers
                        group n by n % 5 into g
                        select new { Remainder = g.Key, Numbers = g };
                    foreach (var g in numberGroups) {
                        Console.WriteLine("Numbers with a remainder of {0} when divided by 5:", g.Remainder);
                        foreach (var n in g.Numbers) {
                            Console.WriteLine(n);
                        }
                    }
        }

      • GroupBy - Simple 2
      • public void Linq41() {
                    string[] words = { "blueberry", "chimpanzee", "abacus", "banana", "apple", "cheese" };
                    var wordGroups =
                        from w in words
                        group w by w[0] into g
                        select new { FirstLetter = g.Key, Words = g };
                    foreach (var g in wordGroups) {
                        Console.WriteLine("Words that start with the letter '{0}':", g.FirstLetter);
                        foreach (var w in g.Words) {
                            Console.WriteLine(w);
                        }
                    }
                }

      • GroupBy - Simple 3
      • public void Linq42() {
                    List<Product> products = GetProductList();
                    var orderGroups =
                        from p in products
                        group p by p.Category into g
                        select new { Category = g.Key, Products = g };
                    ObjectDumper.Write(orderGroups, 1);
                }

      • GroupBy - Nested
      • public void Linq43() {
                    List<Customer> customers = GetCustomerList();
                    var customerOrderGroups =
                        from c in customers
                        select
                            new {c.CompanyName,
                                 YearGroups =
                                     from o in c.Orders
                                     group o by o.OrderDate.Year into yg
                                     select
                                         new {Year = yg.Key,
                                              MonthGroups =
                                                  from o in yg
                                                  group o by o.OrderDate.Month into mg
                                                  select new { Month = mg.Key, Orders = mg }
                                             }
                                };
                    ObjectDumper.Write(customerOrderGroups, 3);
                }

      • GroupBy - Comparer
      • public class AnagramEqualityComparer : IEqualityComparer 
        {
        public bool Equals(string x, string y) { return getCanonicalString(x) == getCanonicalString(y); }
        public int GetHashCode(string obj) { return getCanonicalString(obj).GetHashCode(); }
        private string getCanonicalString(string word)
        {
        char[] wordChars = word.ToCharArray(); Array.Sort(wordChars); return new string(wordChars);
        }
        }


        publicvoid Linq44() 
        {
        string[] anagrams = {"from ", " salt", " earn ", " last ", " near ", " form "};
        var orderGroups = anagrams.GroupBy(w => w.Trim(), new AnagramEqualityComparer());
        ObjectDumper.Write(orderGroups, 1);
        }
      • GroupBy - Comparer, Mapped
      • public void Linq45() {
                    string[] anagrams = {"from ", " salt", " earn ", " last ", " near ", " form "};
                    var orderGroups = anagrams.GroupBy(
                                w => w.Trim(),
                                a => a.ToUpper(),
                                new AnagramEqualityComparer()
                                );
                    ObjectDumper.Write(orderGroups, 1);
                }
        public class AnagramEqualityComparer : IEqualityComparer<string>
                {
                    public bool Equals(string x, string y) {
                        return getCanonicalString(x) == getCanonicalString(y);
                    }
                    public int GetHashCode(string obj) {
                        return getCanonicalString(obj).GetHashCode();
                    }
                    private string getCanonicalString(string word) {
                        char[] wordChars = word.ToCharArray();
                        Array.Sort<char>(wordChars);
                        return new string(wordChars);
                    }
                }

      Set Operators
      • Distinct - 1
      • publicvoid Linq46() {
            int[] factorsOf300 = { 2, 2, 3, 5, 5 };
            
            var uniqueFactors = factorsOf300.Distinct();
        
            Console.WriteLine("Prime factors of 300:");
            foreach (var f in uniqueFactors) {
                Console.WriteLine(f);
            }
        }
        
      • Distinct - 2
      • public void Linq47() {
            List products = GetProductList();
        var categoryNames = ( from p in products select p.Category) .Distinct(); Console.WriteLine("Category names:"); foreach (var n in categoryNames) { Console.WriteLine(n); } }
      • Union - 1
      • publicvoid Linq48() {
            int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
            int[] numbersB = { 1, 3, 5, 7, 8 };
            
            var uniqueNumbers = numbersA.Union(numbersB);
            
            Console.WriteLine("Unique numbers from both arrays:");
            foreach (var n in uniqueNumbers) {
                Console.WriteLine(n);
            }
        }
        
      • Union - 2
      • publicvoid Linq49() {
            List products = GetProductList();List customers = GetCustomerList();
            
            var productFirstChars =
                from p in products
                select p.ProductName[0];
            var customerFirstChars =
                from c in customers
                select c.CompanyName[0];
            
            var uniqueFirstChars = productFirstChars.Union(customerFirstChars);
            
            Console.WriteLine("Unique first letters from Product names and Customer names:");
            foreach (var ch in uniqueFirstChars) {
                Console.WriteLine(ch);
            }
        }
        
      • Intersect - 1
      • publicvoid Linq50() {
            int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
            int[] numbersB = { 1, 3, 5, 7, 8 };
            
            var commonNumbers = numbersA.Intersect(numbersB);
            
            Console.WriteLine("Common numbers shared by both arrays:");
            foreach (var n in commonNumbers) {
                Console.WriteLine(n);
            }
        }
        
      • Intersect - 2
      • publicvoid Linq51() {
            List products = GetProductList();
        List customers = GetCustomerList(); var productFirstChars = from p in products select p.ProductName[0]; var customerFirstChars = from c in customers select c.CompanyName[0]; var commonFirstChars = productFirstChars.Intersect(customerFirstChars); Console.WriteLine("Common first letters from Product names and Customer names:"); foreach (var ch in commonFirstChars) { Console.WriteLine(ch); } }
      • Except - 1
      • public void Linq52() {
            int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
            int[] numbersB = { 1, 3, 5, 7, 8 };
            IEnumerable<int> aOnlyNumbers = numbersA.Except(numbersB);
            Console.WriteLine("Numbers in first array but not second array:");
            foreach (var n in aOnlyNumbers) {
                Console.WriteLine(n);
            }
        }

      • Except - 2
      • public void Linq53() {
            List products = GetProductList();
            List customers = GetCustomerList();
            var productFirstChars =
                from p in products
                select p.ProductName[0];
            var customerFirstChars =
                from c in customers
                select c.CompanyName[0];
            var productOnlyFirstChars = productFirstChars.Except(customerFirstChars);
            Console.WriteLine("First letters from Product names, but not from Customer names:");
            foreach (var ch in productOnlyFirstChars) {
                Console.WriteLine(ch);
            }
        }

      Conversion Operators
      • To Array
      • public void Linq54() {
            double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };
            var sortedDoubles =
                from d in doubles
                orderby d descending
                select d;
            var doublesArray = sortedDoubles.ToArray();
            Console.WriteLine("Every other double from highest to lowest:");
            for (int d = 0; d < doublesArray.Length; d += 2) {
                Console.WriteLine(doublesArray[d]);
            }
        }

      • To List
      • public void Linq55() {
            string[] words = { "cherry", "apple", "blueberry" };
            var sortedWords =
                from w in words
                orderby w
                select w;
            var wordList = sortedWords.ToList();
            Console.WriteLine("The sorted word list:");
            foreach (var w in wordList) {
                Console.WriteLine(w);
            }
        }

      • To Dictionary
      • public void Linq56() {
            var scoreRecords = new [] { new {Name = "Alice", Score = 50},
                                        new {Name = "Bob" , Score = 40},
                                        new {Name = "Cathy", Score = 45}
                                      };
            var scoreRecordsDict = scoreRecords.ToDictionary(sr => sr.Name);
            Console.WriteLine("Bob's score: {0}", scoreRecordsDict["Bob"]);
        }

      • OfType
      • public void Linq57() {
            object[] numbers = { null, 1.0, "two", 3, 4.0f, 5, "six", 7.0 };
            var doubles = numbers.OfType<double>();
            Console.WriteLine("Numbers stored as doubles:");
            foreach (var d in doubles) {
                Console.WriteLine(d);
            }
        }

      Element Operators
      • First - Simple
      • public void Linq58() {
            List products = GetProductList();
            Product product12 = (
                from p in products
                where p.ProductID == 12
                select p )
                .First();
            ObjectDumper.Write(product12);
        }

      • First - Indexed
      • public void Linq60() {
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            int evenNum = numbers.First((num, index) => (num % 2 == 0) && (index % 2 == 0));
            Console.WriteLine("{0} is an even number at an even position within the list.", evenNum);
        }

      • FirstOrDefault - Simple
      • public void Linq61() {
            int[] numbers = {};
            int firstNumOrDefault = numbers.FirstOrDefault();
            Console.WriteLine(firstNumOrDefault);
        }

      • FirstOrDefault - Condition
      • public void Linq62() {
            List products = GetProductList();
            Product product789 = products.FirstOrDefault(p => p.ProductID == 789);
            Console.WriteLine("Product 789 exists: {0}", product789 != null);
        }

      • FirstOrDefault - Indexed
      • public void Linq63() {
            double?[] doubles = { 1.7, 2.3, 4.1, 1.9, 2.9 };
            double? num = doubles.FirstOrDefault((n, index) => (n >= index - 0.5 && n <= index + 0.5));
            if (num != null)
                Console.WriteLine("The value {1} is within 0.5 of its index position.", num);
            else
                Console.WriteLine("There is no number within 0.5 of its index position.", num);
        }

      • ElementAt
      • public void Linq64() {
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            int fourthLowNum = (
                from n in numbers
                where n < 5
                select n )
                .ElementAt(3); // 3 because sequences use 0-based indexing
            Console.WriteLine("Fourth number < 5: {0}", fourthLowNum);
        }

      Generation Operators
      • Range
      • public void Linq65() {
           var numbers =
              from n in Sequence.Range(100, 50)
              selectnew {Number = n, OddEven = n % 2 == 1 ? "odd" : "even"};
           foreach (var n in numbers) {
              Console.WriteLine("The number {0} is {1}.", n.Number, n.OddEven);
           }
        }

      • Repeat
      • public void Linq66() {
           var numbers = Sequence.Repeat(7, 10);
           foreach (var n in numbers) {
              Console.WriteLine(n);
           }
        }

      Quantifiers
      • Any - Simple
      • public void Linq67() {
           string[] words = { "believe", "relief", "receipt", "field" };
           bool iAfterE = words.Any(w => w.Contains("ei"));
           Console.WriteLine("There is a word that contains in the list that contains 'ei': {0}", iAfterE);
        }

      • Any - Indexed
      • public void Linq68() {
           int[] numbers = { -9, -4, -8, -3, -5, -2, -1, -6, -7 };
           bool negativeMatch = numbers.Any((n, index) => n == -index);
           Console.WriteLine("There is a number that is the negative of its index: {0}", negativeMatch);
        }

      • Any - Grouped
      • public void Linq69() {
           List products = GetProductList();
           var productGroups =
              from p in products
              group p by p.Category into g
              where g.Group.Any(p => p.UnitsInStock == 0)
              select new {Category = g.Key, Products = g.Group};
           ObjectDumper.Write(productGroups, 1);
        }

      • All - Simple
      • public void Linq70() {
           int[] numbers = { 1, 11, 3, 19, 41, 65, 19 };
           bool onlyOdd = numbers.All(n => n % 2 == 1);
           Console.WriteLine("The list contains only odd numbers: {0}", onlyOdd);
        }

      • All - Indexed
      • public void Linq71() {
           int[] lowNumbers = { 1, 11, 3, 19, 41, 65, 19 };
           int[] highNumbers = { 7, 19, 42, 22, 45, 79, 24 };
           bool allLower = lowNumbers.All((num, index) => num < highNumbers[index]);
           Console.WriteLine("Each number in the first list is lower than its counterpart in the second list: {0}", allLower);
        }

      • All - Grouped
      • public void Linq72() {
           List products = GetProductList();
           var productGroups =
              from p in products
              group p by p.Category into g
              where g.Group.All(p => p.UnitsInStock > 0)
              select new {Category = g.Key, Products = g.Group};
           ObjectDumper.Write(productGroups, 1);
        }

      Aggregate Operators
      • Count - Simple
      • public void Linq73() {
           int[] factorsOf300 = { 2, 2, 3, 5, 5 };
           int uniqueFactors = factorsOf300.Distinct().Count();
           Console.WriteLine("There are {0} unique factors of 300.", uniqueFactors);
        }

      • Count - Conditional
      • public void Linq74() {
           int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
           int oddNumbers = numbers.Count(n => n % 2 == 1);
           Console.WriteLine("There are {0} odd numbers in the list.", oddNumbers);
        }

      • Count - Indexed
      • public void Linq75() {
           int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
           int oddEvenMatches = numbers.Count((n, index) => n % 2 == index % 2);
           Console.WriteLine("There are {0} numbers in the list whose odd/even status " +
                "matches that of their position.", oddEvenMatches);
        }

      • Count - Nested
      • public void Linq76() {
           List customers = GetCustomerList();
           var orderCounts =
              from c in customers
              select new {c.CustomerID, OrderCount = c.Orders.Count()};
           ObjectDumper.Write(orderCounts);
        }

      • Count - Grouped
      • public void Linq77() {
           List products = GetProductList();
           var categoryCounts =
              from p in products
              group p by p.Category into g
              select new {Category = g.Key, ProductCount = g.Group.Count()};
           ObjectDumper.Write(categoryCounts);
        }

      • Sum - Simple
      • public void Linq78() {
           int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
           double numSum = numbers.Sum();
           Console.WriteLine("The sum of the numbers is {0}.", numSum);
        }

      • Sum - Projection
      • public void Linq79() {
           string[] words = { "cherry", "apple", "blueberry" };
           double totalChars = words.Sum(w => w.Length);
           Console.WriteLine("There are a total of {0} characters in these words.", totalChars);
        }

      • Sum - Grouped
      • public void Linq80() {
           List products = GetProductList();
           var categories =
              from p in products
              group p by p.Category into g
              select new {Category = g.Key, TotalUnitsInStock = g.Group.Sum(p => p.UnitsInStock)};
           ObjectDumper.Write(categories);
        }

      • Min - Simple
      • public void Linq81() {
           int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
           int minNum = numbers.Min();
           Console.WriteLine("The minimum number is {0}.", minNum);
        }

      • Min - Projection
      • public void Linq82() {
           string[] words = { "cherry", "apple", "blueberry" };
           int shortestWord = words.Min(w => w.Length);
           Console.WriteLine("The shortest word is {0} characters long.", shortestWord);
        }

      • Min - Grouped
      • public void Linq83() {
           List products = GetProductList();
           var categories =
              from p in products
              group p by p.Category into g
              select new {Category = g.Key, CheapestPrice = g.Group.Min(p => p.UnitPrice)};
           ObjectDumper.Write(categories);
        }

      • Min - Elements
      • public void Linq84() {
           List products = GetProductList();
           var categories =
              from p in products
              group p by p.Category into g
              from minPrice = g.Group.Min(p => p.UnitPrice)
              select new {Category = g.Key, CheapestProducts = g.Group.Where(p => p.UnitPrice == minPrice)};
           ObjectDumper.Write(categories, 1);
        }

      • Max - Simple
      • public void Linq85() {
           int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
           int maxNum = numbers.Max();
           Console.WriteLine("The maximum number is {0}.", maxNum);
        }

      • Max - Projection
      • public void Linq86() {
           string[] words = { "cherry", "apple", "blueberry" };
           int longestLength = words.Max(w => w.Length);
           Console.WriteLine("The longest word is {0} characters long.", longestLength);
        }

      • Max - Grouped
      • public void Linq87() {
           List products = GetProductList();
           var categories =
              from p in products
              group p by p.Category into g
              select new {Category = g.Key, MostExpensivePrice = g.Group.Max(p => p.UnitPrice)};
           ObjectDumper.Write(categories);
        }

      • Max - Elements
      • public void Linq88() {
           List products = GetProductList();
           var categories =
              from p in products
              group p by p.Category into g
              from maxPrice = g.Group.Max(p => p.UnitPrice)
              select new {Category = g.Key, MostExpensiveProducts = g.Group.Where(p => p.UnitPrice == maxPrice)};
           ObjectDumper.Write(categories, 1);
        }

      • Average - Simple
      • public void Linq89() {
           int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
           double averageNum = numbers.Average();
           Console.WriteLine("The average number is {0}.", averageNum);
        }

      • Average - Projection
      • public void Linq90() {
           string[] words = { "cherry", "apple", "blueberry" };
           double averageLength = words.Average(w => w.Length);
           Console.WriteLine("The average word length is {0} characters.", averageLength);
        }

      • Average - Grouped
      • public void Linq91() {
           List products = GetProductList();
           var categories =
              from p in products
              group p by p.Category into g
              select new {Category = g.Key, AveragePrice = g.Group.Average(p => p.UnitPrice)};
           ObjectDumper.Write(categories);
        }

      • Fold - Simple
      • public void Linq92() {
           double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };
           double product = doubles.Fold((runningProduct, nextFactor) => runningProduct * nextFactor);
           Console.WriteLine("Total product of all numbers: {0}", product);
        }

      • Fold - Seed
      • public void Linq93() {
           double startBalance = 100.0;
           int[] attemptedWithdrawals = { 20, 10, 40, 50, 10, 70, 30 };
           double endBalance =
              attemptedWithdrawals.Fold(startBalance,
                 (balance, nextWithdrawal) =>
                    ( (nextWithdrawal <= balance) ? (balance - nextWithdrawal) : balance ) );
           Console.WriteLine("Ending balance: {0}", endBalance);
        }

      Miscellaneous Operators
      • Concat - 1
      • public void Linq94() {
            int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
            int[] numbersB = { 1, 3, 5, 7, 8 };
            var allNumbers = numbersA.Concat(numbersB);
            Console.WriteLine("All numbers from both arrays:");
            foreach (var n in allNumbers) {
                Console.WriteLine(n);
            }
        }

      • Concat - 2
      • public void Linq95() {
            List customers = GetCustomerList();
            List products = GetProductList();
            var customerNames =
                from c in customers
                select c.CompanyName;
            var productNames =
                from p in products
                select p.ProductName;
            var allNames = customerNames.Concat(productNames);
            Console.WriteLine("Customer and product names:");
            foreach (var n in allNames) {
                Console.WriteLine(n);
            }
        }

      • EqualAll - 1
      • public void Linq96() {
            var wordsA = new string[] { "cherry", "apple", "blueberry" };
            var wordsB = new string[] { "cherry", "apple", "blueberry" };
            bool match = wordsA.EqualAll(wordsB);
            Console.WriteLine("The sequences match: {0}", match);
        }

      • EqualAll - 2
      • public void Linq97() {
            var wordsA = new string[] { "cherry", "apple", "blueberry" };
            var wordsB = new string[] { "apple", "blueberry", "cherry" };
            bool match = wordsA.EqualAll(wordsB);
            Console.WriteLine("The sequences match: {0}", match);
        }

      Custom Sequence Operators
      • Combine
      • public static class CustomSequenceOperators
        {
            public static IEnumerable Combine(this IEnumerable first, IEnumerable second, Func func) {
                using (IEnumerator e1 = first.GetEnumerator(), e2 = second.GetEnumerator()) {
                    while (e1.MoveNext() && e2.MoveNext()) {
                        yield return func(e1.Current, e2.Current);
                    }
                }
            }
        }
        public void Linq98() {           
            int[] vectorA = { 0, 2, 4, 5, 6 };
            int[] vectorB = { 1, 3, 5, 7, 8 };
            int dotProduct = vectorA.Combine(vectorB, (a, b) => a * b).Sum();
            Console.WriteLine("Dot product: {0}", dotProduct);
        }

      Query Execution
      • Deferred
      • public void Linq99() {
            // Sequence operators form first-class queries that
            // are not executed until you enumerate over them.
            int[] numbers = new int[] { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            int i = 0;
            var q =
                from n in numbers
                select ++i;
            // Note, the local variable 'i' is not incremented
            // until each element is evaluated (as a side-effect):
            foreach (var v in q) {
                Console.WriteLine("v = {0}, i = {1}", v, i);        
            }
        }

      • Immediate
      • public void Linq100() {
            // Methods like ToList() cause the query to be
            // executed immediately, caching the results.
            int[] numbers = new int[] { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };       
            int i = 0;
            var q = (
                from n in numbers
                select ++i )
                .ToList();
            // The local variable i has already been fully
            // incremented before we iterate the results:
            foreach (var v in q) {
                Console.WriteLine("v = {0}, i = {1}", v, i);
            }
        }

      • Query Reuse
      • public void Linq101() {
            // Deferred execution lets us define a query once
            // and then reuse it later after data changes.
            int[] numbers = new int[] { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            var lowNumbers =
                from n in numbers
                where n <= 3
                select n;
            Console.WriteLine("First run numbers <= 3:");
            foreach (int n in lowNumbers) {
                Console.WriteLine(n);
            }
            for (int i = 0; i < 10; i++) {
                numbers[i] = -numbers[i];
            }
            // During this second run, the same query object,
            // lowNumbers, will be iterating over the new state
            // of numbers[], producing different results:
            Console.WriteLine("Second run numbers <= 3:");
            foreach (int n in lowNumbers) {
                Console.WriteLine(n);
            }
        }

      posted on 2008-01-03 16:19  老翅寒暑  閱讀(7747)  評論(3)    收藏  舉報

      導航

      主站蜘蛛池模板: 国产在线高清视频无码| 亚洲欧美日韩综合在线丁香 | 精品国产高清中文字幕| 亚洲一区二区精品偷拍| 亚洲AV无码破坏版在线观看| 一本久久a久久精品亚洲| 国产性生大片免费观看性| 国产成人精品永久免费视频| 中文字幕av中文字无码亚| 国产女人高潮视频在线观看| 国产精品国三级国产专区| 久久精品娱乐亚洲领先| 老司机午夜精品视频资源| 精品久久久久久中文字幕202| 国产亚欧女人天堂AV在线| 成人3d动漫一区二区三区| 国产精品538一区二区在线| 国产一区二区三区黄色大片| 国产精品中文字幕自拍| 色狠狠色婷婷丁香五月| 一区二区三区无码免费看| 亚洲一区二区三区在线观看播放| 久久国内精品一国内精品| 日韩精品无码不卡无码| 色综合久久中文字幕综合网| 欧美激情一区二区三区成人| 亚洲精品日韩精品久久| 色综合欧美亚洲国产| 日本视频精品一区二区| 久久国产成人午夜av影院| 扒开女人内裤猛进猛出免费视频| 久久免费偷拍视频有没有| 亚洲欧美日韩愉拍自拍美利坚| 免费人成黄页在线观看国产| 粉嫩一区二区三区精品视频| 久久国产成人高清精品亚洲| 色偷偷亚洲女人天堂观看| 一区二区亚洲人妻精品| 中文字幕国产精品一区二| 极品人妻videosss人妻| av色国产色拍|