zoukankan      html  css  js  c++  java
  • LINQ查询操作符

        #region Types
    
        public enum Countries
        {
            USA,
            Italy,
        }
    
        public class Customer
        {
            public string Name {get;set;}
            public string City { get; set; }
            public Countries Country { get; set; }
            public Order[] Orders { get; set; }
    
            public override string ToString()
            {
                return String.Format("Name: {0} - City: {1} - Country: {2}",
                    this.Name, this.City, this.Country);
            }
        }
    
        public class Order
        {
            public int IdOrder { get; set; }
            public int Quantity { get; set; }
            public bool Shipped { get; set; }
            public string Month { get; set; }
            public int IdProduct { get; set; }
    
            public override string ToString()
            {
                return String.Format("IdOrder: {0} - IdProduct: {1} - Quantity: {2} - Shipped: {3} - Month: {4}",
                    this.IdOrder, this.IdProduct, this.Quantity, this.Shipped, this.Month);
            }
        }
    
        public class Product
        {
            public int IdProduct { get; set; }
            public decimal Price { get; set; }
    
            public override string ToString()
            {
                return String.Format("IdProduct: {0} - Price: {1}", this.IdProduct, this.Price);
            }
        }
    
        #endregion
    
        class Program
        {
            private static Customer[] customers;
            private static Product[] products;
    
            static void LoadData()
            {
                customers = new Customer[] {
                    new Customer {Name = "Paolo", City = "Brescia", Country = Countries.Italy, Orders = new Order[] {
                        new Order {IdOrder = 1, Quantity = 3, IdProduct = 1, Shipped = false, Month = "January"},
                        new Order {IdOrder = 2, Quantity = 5, IdProduct = 2, Shipped = true, Month = "May"}}},
                    new Customer {Name = "Marco", City = "Torino", Country = Countries.Italy, Orders =  new Order[] {
                        new Order {IdOrder = 3, Quantity = 10, IdProduct = 1, Shipped = false, Month = "July"},
                        new Order {IdOrder = 4, Quantity = 20, IdProduct = 3, Shipped = true, Month = "December"}}},
                    new Customer {Name = "James", City = "Dallas", Country = Countries.USA, Orders =  new Order[] {
                        new Order {IdOrder = 5, Quantity = 20, IdProduct = 3, Shipped = true, Month = "December"}}},
                    new Customer {Name = "Frank", City = "Seattle", Country = Countries.USA, Orders =  new Order[] {
                        new Order {IdOrder = 6, Quantity = 20, IdProduct = 5, Shipped = false, Month = "July"}}}};
    
                products = new Product[] {
                    new Product {IdProduct = 1, Price = 10 },
                    new Product {IdProduct = 2, Price = 20 },
                    new Product {IdProduct = 3, Price = 30 },
                    new Product {IdProduct = 4, Price = 40 },
                    new Product {IdProduct = 5, Price = 50 },
                    new Product {IdProduct = 6, Price = 60 }};
            }
    
            static Program()
            {
                LoadData();
            }
            static void Main(string[] args)
            {
               // restrictionOperatorWithIndex();
    
               // projectionWithIndex();
                //selectManySample();
                selectManySampleWithCustomSelector();
            }
    
            //使用分页的Where
            static void restrictionOperatorWithIndex()
            {
                var expr = customers
                    .Where((c, index) => (c.Country == Countries.Italy && index >= 1))
                    .Select(c => new { c.Name });
    
                foreach (var item in expr)
                {
                    Console.WriteLine(item);
                }
            }
    
            //使用分页的Select
            static void projectionWithIndex()
            {
                var expr =
                    customers
                    .Select((c, index) => new { index, c.Name, c.Country });
    
                foreach (var item in expr)
                {
                    Console.WriteLine(item);
                }
            }
    
            //SelectMany
            static void selectManySample()
            {
                var orders = customers
                    .Where(c => c.Country == Countries.Italy)
                    .SelectMany(c =>c.Orders);
    
                //查询表达式
                //var orders = from c in customers
                //             where c.Country == Countries.Italy
                //             from o in c.Orders
                //             select o;
                foreach (var item in orders)
                {
                    Console.WriteLine(item);
                }
            }
    
    
            static void selectManySampleWithCustomSelector()
            {
                var items = customers
                    .Where(c => c.Country == Countries.Italy)
                    .SelectMany(c => c.Orders, (c, o) => new { o.Quantity, o.IdProduct });
    
                //查询表达式
                //var items = from c in customers
                //            where c.Country == Countries.Italy
                //            from o in c.Orders
                //            select new { o.Quantity, o.IdProduct };
                foreach (var item in items)
                {
                    Console.WriteLine(item);
                }
            }
    
        }
  • 相关阅读:
    A1023 Have Fun with Numbers (20分)(大整数四则运算)
    A1096 Consecutive Factors (20分)(质数分解)
    A1078 Hashing (25分)(哈希表、平方探测法)
    A1015 Reversible Primes (20分)(素数判断,进制转换)
    A1081 Rational Sum (20分)
    A1088 Rational Arithmetic (20分)
    A1049 Counting Ones (30分)
    A1008 Elevator (20分)
    A1059 Prime Factors (25分)
    A1155 Heap Paths (30分)
  • 原文地址:https://www.cnblogs.com/FlyCat/p/2564552.html
Copyright © 2011-2022 走看看