Linq练习(一)

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


namespace ConsoleApplication2
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            Init init = new Init();
            var kongfus = init.Kongfus();
            var roles = init.Role(kongfus);

            Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>查询华山门派且级别大于5的角色<<<<<<<<<<<<<<<<<<<<<<<<");
            //Linq查询:查询华山门派且级别大于5的角色
            //IEnumerable<MartialArtsMaster> query = Enumerable.Where(roles, n => n.Menpai.Equals("丐帮") && n.Level > 5);//普通的静态方法语法
            //IEnumerable<MartialArtsMaster> query = roles.Where(n => n.Menpai.Equals("丐帮")&&n.Level>5);//扩展方法语法
            IEnumerable<MartialArtsMaster>
                query = from n in roles where n.Menpai.Equals("丐帮") && n.Level > 5 select n; //查询表达式|查询语法
            foreach (var role in query)
            {
                Console.WriteLine(role.ToString());
            }

            //Linq联合查询:查询功夫力量大于90且级别大于5的角色
            Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>查询功夫力量大于90且级别大于5的角色<<<<<<<<<<<<<<<<<<<<<<<<");
            //IEnumerable<MartialArtsMaster> query1 = Enumerable.Where(roles, n => n.Kongfu.Power > 90 && n.Level > 5);//普通的静态方法语法
            //IEnumerable<MartialArtsMaster> query1 = roles.Where(n => n.Kongfu.Power > 90 && n.Level > 5);//扩展方法语法
            IEnumerable<MartialArtsMaster>
                query1 = from n in roles where n.Kongfu.Power > 90 && n.Level > 5 select n; //查询表达式|查询语法
            foreach (var role in query1)
            {
                Console.WriteLine(role.ToString());
            }

            //orderby 按年龄排序
            Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>orderby 按年龄排序<<<<<<<<<<<<<<<<<<<<<<<<");
            //IEnumerable<MartialArtsMaster> query2 = Enumerable.OrderBy(roles, n => n.Age);//普通静态方法语法
            //IEnumerable<MartialArtsMaster> query2 = Enumerable.OrderByDescending(roles, n => n.Age);//普通静态方法语法
            //IEnumerable<MartialArtsMaster> query2 = roles.OrderBy(n => n.Age);//扩展方法语法
            //IEnumerable<MartialArtsMaster> query2 = roles.OrderByDescending(n => n.Age);//扩展方法语法
            //IEnumerable<MartialArtsMaster> query2 = from n in roles orderby n.Age select  n;//查询表达式 从小到大排序
            IEnumerable<MartialArtsMaster> query2 = from n in roles orderby n.Age descending select n; //查询表达式 从大到小排序
            foreach (var role in query2)
            {
                Console.WriteLine(role.ToString());
            }

            //流式查询 等级大于8级 按 id从小到大排序 只显示姓名 和 等级
            Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>流式查询 等级大于8级 按 id从小到大排序 只显示姓名 和 等级<<<<<<<<<<<<<<<<<<<<<<<<");
            IEnumerable<string> query3 = roles
                .Where(n => n.Level > 8)
                .OrderBy(n => n.Id)
                .Select(n => string.Format("姓名:" + n.Name + ",等级:" + n.Level));
            foreach (var role in query3)
            {
                Console.WriteLine(role);
            }

            //查询表达式 等级大于8级 按 id从小到大排序 只显示姓名 和 等级
            Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>查询表达式 等级大于8级 按 id从小到大排序 只显示姓名 和 等级<<<<<<<<<<<<<<<<<<<<<<<<");
            IEnumerable<string> query4 = from n in roles
                where n.Level > 8
                orderby n.Id
                select "姓名:" + n.Name + ",等级:" + n.Level;
            foreach (var role in query4)
            {
                Console.WriteLine(role);
            }
            
            //混合查询 等级大于8级 按 id从小到大排序 只显示姓名 和等级
            Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>混合查询 等级大于8级 按 id从小到大排序 只显示姓名 和等级<<<<<<<<<<<<<<<<<<<<<<<<");
            IEnumerable<string> query5 = (from n in roles where n.Level > 8 select n).OrderBy(n => n.Id)
                .Select(n => "姓名:" + n.Name + ",等级:" + n.Level);
            foreach (var role in query5)
            {
                Console.WriteLine(role);
            }
            
            //Skip Take Reverse 查询与算符
            Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>Skip Take Reverse 查询与算符<<<<<<<<<<<<<<<<<<<<<<<<");
            IEnumerable<MartialArtsMaster> query6 = roles.Skip(5);
            Console.WriteLine("一条华丽的分隔线:Skip");
            foreach (var role in query6)
            {
                Console.WriteLine(role);
            }
            Console.WriteLine();
            IEnumerable<MartialArtsMaster> query7 = roles.Take(5);
            Console.WriteLine("一条华丽的分隔线:Take");
            foreach (var role in query7)
            {
                Console.WriteLine(role);
            }
            Console.WriteLine();
            int[] numbers= {1,2,3}; 
            IEnumerable<int> query8 =  numbers.Reverse();
            foreach (var i in query8)
            {
                Console.Write(i+",");
            }
            //First:提取输入序列中的第一个元素、Last:提取输入序列中的最后一个元素、ElementAt:提取输入序列中指定下标的元素
            Console.WriteLine("First:提取输入序列中的第一个元素、Last:提取输入序列中的最后一个元素、ElementAt:提取输入序列中指定下标的元素");
            MartialArtsMaster query9 = roles.First();
            Console.WriteLine("一条华丽的分隔线:First");
            Console.WriteLine(query9);
            Console.WriteLine();
            MartialArtsMaster query10 = roles.Last();
            Console.WriteLine("一条华丽的分隔线:Last");
            Console.WriteLine(query10);
            Console.WriteLine();
            MartialArtsMaster query11 = roles.ElementAt(5);
            Console.WriteLine("一条华丽的分隔线:ElementAt");
            Console.WriteLine(query11);
            Console.WriteLine();
            //聚合运算符Count、Min
            Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>聚合运算符Count、Min<<<<<<<<<<<<<<<<<<<<<<<<");

            int query12 = roles.Count();
            Console.WriteLine("一条华丽的分隔符:Count");
            Console.WriteLine(query12);
            Console.WriteLine();
            int query13 = roles.Min(n=>n.Kongfu.Power);
            Console.WriteLine("一条华丽的分隔符:Min");
            Console.WriteLine(query13);
            Console.WriteLine();

            //判断运算符Contains、Any
            Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>判断运算符Contains、Any<<<<<<<<<<<<<<<<<<<<<<<<");

            int[] numbers2 = {5, 9, 1, 2, 6};
            bool hasLevelTen = numbers.Contains(5);
            Console.WriteLine("一条华丽的分隔符:Contains");
            Console.WriteLine(hasLevelTen);
            Console.WriteLine();
            bool hasMoreThanZeroElement = numbers.Any();
            Console.WriteLine("一条华丽的分隔符:Any");
            Console.WriteLine(hasMoreThanZeroElement);
            Console.WriteLine();
            
            //Concat、Union运算符
            int[] seq1 = {1, 2, 3};
            int[] seq2 = {3, 4, 5};
            IEnumerable<int> query14 = seq1.Concat(seq2);
            Console.WriteLine("一条华丽的分隔符:Concat");
            foreach (var i in query14)
            {
                Console.Write(i+",");
            }
            Console.WriteLine();
            IEnumerable<int> query15 = seq1.Union(seq2);
            Console.WriteLine("一条华丽的分隔符:Union");
            foreach (var i in query15)
            {
                Console.Write(i+",");
            }
            Console.WriteLine();
        }


        /// <summary>
        /// 初始化人物和功夫
        /// </summary>
        class Init
        {    /// <summary>
             ///返回一个人物列表 
             /// </summary>
             /// <returns></returns>
            public List<MartialArtsMaster> Role(List<Kongfu> kongfus)
            {
                var masterList = new List<MartialArtsMaster>()
                {
                    new MartialArtsMaster() {Id = 1, Name = "黄蓉", Age = 18, Menpai = "丐帮", Kongfu = kongfus[0], Level = 9},
                    new MartialArtsMaster() {Id = 2, Name = "洪七公", Age = 70, Menpai = "丐帮", Kongfu = kongfus[0], Level = 10},
                    new MartialArtsMaster() {Id = 3, Name = "郭靖", Age = 22, Menpai = "丐帮", Kongfu = kongfus[1], Level = 10},
                    new MartialArtsMaster() {Id = 4, Name = "任我行", Age = 50, Menpai = "明教", Kongfu = kongfus[2], Level = 1},
                    new MartialArtsMaster() {Id = 5, Name = "东方不败", Age = 35, Menpai = "明教", Kongfu = kongfus[2], Level = 10},
                    new MartialArtsMaster() {Id = 6, Name = "林平之", Age = 23, Menpai = "华山", Kongfu = kongfus[2], Level = 7},
                    new MartialArtsMaster() {Id = 7, Name = "岳不群", Age = 50, Menpai = "华山", Kongfu = kongfus[2], Level = 8},
                    new MartialArtsMaster() {Id = 8, Name = "令狐冲", Age = 23, Menpai = "华山", Kongfu = kongfus[3], Level = 10},
                    new MartialArtsMaster() {Id = 9, Name = "梅超风", Age = 23, Menpai = "桃花岛", Kongfu = kongfus[4], Level = 8},
                    new MartialArtsMaster() {Id = 10, Name = "黄药师", Age = 23, Menpai = "梅花岛", Kongfu =  kongfus[5], Level = 10},
                    new MartialArtsMaster() {Id = 11, Name = "风清扬", Age = 23, Menpai = "华山", Kongfu = kongfus[3], Level = 10}
                };
                return masterList;
            }
            /// <summary>
            /// 返回一个功夫列表
            /// </summary>
            /// <returns></returns>
            public List<Kongfu> Kongfus()
            {
                var kongfuList = new List<Kongfu>()
                {
                    new Kongfu() {Id = 1, Name = "打狗棒法", Power = 90},
                    new Kongfu() {Id = 2, Name = "降龙十八掌", Power = 95},
                    new Kongfu() {Id = 3, Name = "葵花宝典", Power = 100},
                    new Kongfu() {Id = 4, Name = "独孤九剑", Power = 100},
                    new Kongfu() {Id = 5, Name = "九阴真经", Power = 100},
                    new Kongfu() {Id = 6, Name = "弹指神通", Power = 100}
                };
                return kongfuList;
            }
        }
        /// <summary>
        /// 一个人物类
        /// </summary>
        class MartialArtsMaster
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
            public string Menpai { get; set; }
            public Kongfu Kongfu { get; set; }
            public int Level { get; set; }
            //重写ToString方法
            public override string ToString()
            {
                return string.Format("Id: {0}, Name: {1}, Age: {2}, Menpai: {3}, Kongfu: {4}, Level: {5}", Id, Name, Age, Menpai, Kongfu.Name, Level);
            }
        }
        /// <summary>
        /// 一个功夫类
        /// </summary>
        class Kongfu
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public int Power { get; set; }

            public override string ToString()
            {
                return string.Format("Id: {0}, Name: {1}, Power: {2}", Id, Name, Power);
            }
        }

        
        

    }

    
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值