加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

101个LINQ示例,包含几乎全部操作

发布时间:2020-12-15 17:53:02 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 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

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

    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,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,0 };  
        string[] strings = { "zero","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,"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,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,0 };  
        string[] digits = { "zero","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,5,9 };  
        int[] numbersB = { 1,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)  
            select new {c.CustomerID,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,total};  
        ObjectDumper.Write(orders);  
    }  
      
    SelectMany - Multiple from  
    public void Linq18() {  
        List customers = GetCustomerList();  
        DateTime cutoffDate = new DateTime(1997,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,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.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,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.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,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,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,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","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","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,true);  
        }  
    }  
      
    publicvoid Linq34() {  
        string[] words = { "aPPLE","cHeRry"};  
          
        var sortedWords = words.OrderByDescending(a => a,new CaseInsensitiveComparer());  
              
        ObjectDumper.Write(sortedWords);  
    }  
    ThenBy - Simple  
    publicvoid Linq35() {  
        string[] digits = { "zero","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,true);  
        }  
    }  
      
    publicvoid Linq36() {  
        string[] words = { "aPPLE","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,true);  
        }  
    }  
      
    publicvoid Linq38() {  
        string[] words = { "aPPLE","cHeRry"};  
          
        var sortedWords =  
            words.OrderBy(a => a.Length)  
                    .ThenByDescending(a => a,new CaseInsensitiveComparer());  
              
        ObjectDumper.Write(sortedWords);  
    }  
    Reverse  
    publicvoid Linq39() {  
        string[] digits = { "zero","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,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","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 "," 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,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,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,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,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.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","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,4.0f,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,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.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,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,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,19 };   
       int[] highNumbers = { 7,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,1);   
    }  
      
    Aggregate Operators  
    Count - Simple  
    public void Linq73() {   
       int[] factorsOf300 = { 2,5 };   
       int uniqueFactors = factorsOf300.Distinct().Count();   
       Console.WriteLine("There are {0} unique factors of 300.",uniqueFactors);   
    }  
      
    Count - Conditional  
    public void Linq74() {   
       int[] numbers = { 5,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,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,0 };   
       double numSum = numbers.Sum();   
       Console.WriteLine("The sum of the numbers is {0}.",numSum);   
    }  
      
    Sum - Projection  
    public void Linq79() {  
       string[] words = { "cherry","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,0 };   
       int minNum = numbers.Min();   
       Console.WriteLine("The minimum number is {0}.",minNum);   
    }  
      
    Min - Projection  
    public void Linq82() {   
       string[] words = { "cherry","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,0 };  
       int maxNum = numbers.Max();   
       Console.WriteLine("The maximum number is {0}.",maxNum);   
    }  
      
    Max - Projection  
    public void Linq86() {   
       string[] words = { "cherry","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,0 };   
       double averageNum = numbers.Average();   
       Console.WriteLine("The average number is {0}.",averageNum);   
    }  
      
    Average - Projection  
    public void Linq90() {   
       string[] words = { "cherry","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.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,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,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","blueberry" };  
        var wordsB = new string[] { "cherry","blueberry" };  
        bool match = wordsA.EqualAll(wordsB);  
        Console.WriteLine("The sequences match: {0}",match);  
    }  
      
    EqualAll - 2  
    public void Linq97() {  
        var wordsA = new string[] { "cherry","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,6 };  
        int[] vectorB = { 1,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,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,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);  
        }   
    }  
      
    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,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);  
        }  
    }  

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读