LINQ to Objects(2)

class Customer
    {
        public string ID { get; set; }
        public string City { get; set; }
        public string Country { get; set; }
        public string Region { get; set; }
        public decimal Sales { get; set; }


        public override string ToString()
        {
            return "ID:" + ID + "City:" + City + "Country:" + Country +
                "Region:" + Region + "Sales:" + Sales;
        }
    }

class Program

    {
        static void Main(string[] args)
        {
            List<Customer> customers = new List<Customer>{
            new Customer{ID = "A",City = "New York", Country = "USA",
                                              Region = "North American", Sales = 999},
            new Customer{ID = "B",City = "Mumbai", Country = "India",
                                              Region = "Asia", Sales = 888},
            new Customer{ID = "C",City = "Karachi", Country = "Pakistan",
                                              Region = "Asia", Sales = 777},
            new Customer{ID = "D",City = "Delhi", Country = "India",
                                              Region = "Asia", Sales = 666},
            new Customer{ID = "E",City = "So Paul", Country = "Brazil",
                                              Region = "South America", Sales = 555},
            new Customer{ID = "F",City = "Moscow", Country = "Russia",
                                              Region = "Europe", Sales = 444},
            new Customer{ID = "G",City = "Seoul", Country = "Korea",
                                              Region = "Asia", Sales = 333},
            new Customer{ID = "H",City = "Istanbul", Country = "Turkey",
                                              Region = "Asia", Sales = 222},
            new Customer{ID = "I",City = "Shanghai", Country = "China",
                                              Region = "Asia", Sales = 1111},
            new Customer{ID = "J",City = "Lagos", Country = "Nigeria",

                                              Region = "Africa", Sales = 1000}};



            var queryResults = customers.Where(c => c.Region == "Asia").Select(c => new { c.City, c.Country, c.Sales });//投射:方法语法
          //  var queryResults = customers.Select(c => c.Region).Distinct();  //找出Region不重复的元素
            /*投射:查询语法 
              var queryResults =
                    from c in customers
                    where c.Region == "Asia"
                    select new { c.City,c.Region};*/
            Console.WriteLine("Customers in Asia:");
            foreach (var c in queryResults)
            {
                Console.WriteLine(c);

            }


 /*    //Any 与All的用法
            bool anyUSA = customers.Any(c => c.Country == "USA");
            if (anyUSA)
            {
                Console.WriteLine("Some customers are in the USA");
            }
            else
            {
                Console.WriteLine("No customers are in the USA");
            }
            bool allAsia = customers.All(c => c.Region == "Asia");
            if (allAsia)
            {
                Console.WriteLine("All customers are in the Asia");
            }
            else
            {
                Console.WriteLine("Not All customers are in the Asia");
            }
            //多级排序 查询语法--------------------------beging-----------------------------------------------------------
            var queryResults =
                from c in customers
                orderby c.Region, c.Country descending, c.City
                select new { c.ID, c.Region, c.Country, c.City };
            //多级排序 查询语法--------------------------end-----------------------------------------------------------






            //多级排序 方法语法--------------------------beging-----------------------------------------------------------
            var queryResult = customers.OrderBy(c=>c.Region)
                .ThenBy(c=>c.Country)
                .ThenBy(c=>c.City)
                .Select(c=>new {c.ID,c.Region,c.Country,c.City})
            //多级排序 方法语法--------------------------end-----------------------------------------------------------




            //组合查询 查询语法--------------------------beging-----------------------------------------------------------
            var queryResult = 
                from c in customers
                group c by c.Region into cg
                select new {TotalSales = cg.Sum(c=>c.Sales), Region = cg.Key};
            var ovderResult =
                from a in queryResult
                orderby a.TotalSales descending
                select a;


            foreach (var item in ovderResult)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
            //组合查询 查询语法--------------------------end-----------------------------------------------------------






            //Take Skip 查询语法--------------------------beging-----------------------------------------------------------
            var queryResults =
                from c in customers
                orderby c.Sales descending
                select new { c.ID, c.City, c.Country, c.Sales };
            foreach (var item in queryResults.Take(5))//只查找结果集前五条记录
            {
                Console.WriteLine(item);
            }


            foreach (var item in queryResults.Skip(5))//查找除了前5条记录余下所有的结果
            {
                Console.WriteLine(item);
            }
            //Take Skip 查询语法--------------------------end-----------------------------------------------------------


            //First与 FirstOrDefault 查询语法--------------------------beging-----------------------------------------------------------
            var querResults = from c in customers
                               select new {c.City, c.Country,c.Region};
            //从结果集中返回第一条与条件匹配的元素 如果没有则抛出异常
            Console.WriteLine(queryResults.First(c=>c.Region == "Africa"));
            //从结果集中返回第一条与条件匹配的元素 如果没有则输出空白
            Console.WriteLine(queryResults.FirstOrDefault(c=>c.Region == "Africa"));   */
            //First与 FirstOrDefault 查询语法--------------------------end-----------------------------------------------------------

            Console.ReadKey();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值