• 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);
                }
            }
    
        }
  • 相关阅读:
    java多线程(待完善)
    eclipse console 查看全部的输出
    maven仓库地址
    拷贝Maven工程依赖的jar包出来
    ElasticSearch
    python2学习------基础语法5(常用容器以及相关操作)
    文本框焦点事件改变默认文字
    随机更换图片
    妙味——JS数组的方法
    妙味——封装getStyle()获取样式
  • 原文地址:https://www.cnblogs.com/FlyCat/p/2564552.html
Copyright © 2020-2023  润新知