Complex Query Using Method Syntax : Query « LINQ « C# / CSharp Tutorial






using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

    public class Customer
    {
        public string FirstName    { get; set; }
        public string LastName     { get; set; }
        public string EmailAddress { get; set; }

        public override string ToString(){
            return string.Format("{0} {1}\nEmail:   {2}",FirstName, LastName, EmailAddress);
        }
    }
    public class Address
    {
        public string Name   { get; set; }
        public string Street { get; set; }
        public string City   { get; set; }

        public override string ToString()
        {
            return string.Format("{0}, {1}", Street, City);
        }
    }

    public class Tester
    {
        static void Main()
        {
            List<Customer> customers = new List<Customer>
                {
                    new Customer { FirstName = "A", 
                                    LastName = "B",
                                    EmailAddress = "o@a.com"},
                    new Customer { FirstName = "B", 
                                    LastName = "C",
                                    EmailAddress = "k@a.com" },
                    new Customer { FirstName = "D", 
                                    LastName = "C",
                                    EmailAddress = "d@a.com" },
                    new Customer { FirstName = "F", 
                                    LastName = "G",
                                    EmailAddress = "j@a.com" },
                    new Customer { FirstName = "L", 
                                    LastName = "H",
                                    EmailAddress = "l@a.com" }
                };
            List<Address> addresses = new List<Address>
                {
                    new Address { Name   = "J",
                                  Street = "165 Main", 
                                    City = "City 1" },
                    new Address { Name   = "K H",
                                  Street = "3207 Way", 
                                    City = "Cith 2" },
                    new Address { Name   = "J G",
                                  Street = "800 Blvd.", 
                                    City = "City 3" },
                    new Address { Name   = "Mary",
                                  Street = "7 Ave", 
                                    City = "City 4" },
                    new Address { Name   = "Kate",
                                  Street = "2251 Avenue", 
                                    City = "City 5" }
                };
            var result = customers.Join(addresses,
                        customer => string.Format("{0} {1}", customer.FirstName, customer.LastName),
                        address => address.Name,
                        (customer, address) => new { Customer = customer, Address = address })
                        .OrderBy(ca => ca.Customer.LastName)
                        .ThenByDescending(ca => ca.Address.Street);
            foreach (var ca in result)
            {
                Console.WriteLine(string.Format("{0}\nAddress: {1}",ca.Customer, ca.Address));
            }
        }
    }








22.3.Query
22.3.1.Query Expression
22.3.2.Chaining Query Operators/extracts all strings containing the letter 'a', sorts them by length, and then converts the results to uppercase
22.3.3.Use Contains, Length and ToUpper from Linq
22.3.4.Use select to retrieve all nodes in a Binary tree
22.3.5.Get Distinct departments with condition
22.3.6.Use LINQ to get Employees in the IT department from a tree
22.3.7.Use from where select to choose the Employees in the IT department from a tree
22.3.8.All employees in a tree are grouped by department
22.3.9.ArrayList Query
22.3.10.Complex Query Using Method Syntax
22.3.11.group query
22.3.12.query with extension methods
22.3.13.Join Query
22.3.14.Conduct query on the result again
22.3.15.Use a LINQ query to find the public enums
22.3.16.Define the query using IndexArray first.
22.3.17.Define the query using two from keywords.
22.3.18.Using Linq to get all methods