LINQ管理查询和Lambda表达式管理查询

  • 新建两个类
    internal class MartialArtMaster
    {
        public int ID { get; set; }
        public string Name { get; set; }

        public int Age { get; set; }
        public string Menpai { get; set; }
        public string Kongfu { get; set; }
        public int Level { get; set; }
        public override string ToString()
        {
            return $"ID:{ID},Name:{Name},Age:{Age},Menpai:{Menpai},Kongfu:{Kongfu},Level:{Level}";
        }

    }
   internal class KongFu
    {
        public int ID { get; set; }
        public string? Name { get; set; }
        public int Power { get; set; }

        public override string ToString()
        {
            return $"ID:{ID},name:{Name},power:{Power}";
        }
    }
  • 然后去控制台程序中编写语句:
  •         static void Main(string[] args)
            {
                List<MartialArtMaster> martialArts = new List<MartialArtMaster>()
                {
                    new MartialArtMaster(){ID=1, Name="郭靖", Age=30, Kongfu="降龙十八掌",  Menpai="丐帮",Level=10 },
                    new MartialArtMaster(){ID=2, Name="黄蓉", Age=30, Kongfu="打狗棒法",  Menpai="丐帮",Level=9 },
                    new MartialArtMaster(){ID=3, Name="洪七公", Age=30, Kongfu="打狗棒法",  Menpai="丐帮",Level=10 },
                    new MartialArtMaster(){ID=4, Name="任我行", Age=30, Kongfu="葵花宝典",  Menpai="明教",Level=1 },
                    new MartialArtMaster(){ID=5, Name="东方不败", Age=30, Kongfu="葵花宝典",  Menpai="明教",Level=10 },
                    new MartialArtMaster(){ID=6, Name="岳不群", Age=30, Kongfu="葵花宝典",  Menpai="华山",Level=7 },
                    new MartialArtMaster(){ID=7, Name="令狐冲", Age=30, Kongfu="独孤九剑",  Menpai="华山",Level=10 },
                     new MartialArtMaster(){ID=8, Name="黄药师", Age=30, Kongfu="弹指神通",  Menpai="桃花岛",Level=10 },
                     new MartialArtMaster(){ID=9, Name="风清扬", Age=30, Kongfu="独孤九剑",  Menpai="华山",Level=10 }
                };
                List<KongFu> kongFu = new List<KongFu>()
                {
                    new KongFu(){ ID=1, Name="降龙十八掌", Power=99},
                    new KongFu(){ ID=2, Name="弹指神通", Power=80},
                    new KongFu(){ ID=3, Name="打狗棒法", Power=90},
                    new KongFu(){ ID=4, Name="葵花宝典", Power=95},
                    new KongFu(){ ID=5, Name="独孤九剑", Power=70}
                };
                Console.WriteLine("----------------------1.分割线(LINQ关联查询)------------------------");
                //LINQ关联查询
                var linqres = from m in martialArts
                              from k in kongFu
                              where m.Kongfu == k.Name && k.Power>90
                              select new { martialArt = m, kongfu = k };
                
                foreach (var item in linqres)
                {
                    Console.WriteLine(item);
                }
                Console.WriteLine("----------------------2.分割线(Lambda表达式查询)------------------------");
                //Lambda表达式查询
                var res= martialArts.SelectMany(t => kongFu, (t, k) => new { martialArt = t, kongfu = k })
                    .Where(x=>x.martialArt.Kongfu==x.kongfu.Name && x.kongfu.Power > 90);
                foreach (var item in res)
                {
                    Console.WriteLine(item);
                }
                Console.WriteLine("----------------------.分割线(LINQ join on集合联合)------------------------");
                //LINQ join on集合联合
                var linqJoin=from m in martialArts
                             join k in kongFu on m.Kongfu equals k.Name
                             where k.Power>90
                             select new { martialArt = m, kongfu = k };
                foreach (var item in linqJoin)
                {
                    Console.WriteLine(item);
                }
    
    
    
            }

     

  • 查看结果:

 

posted @ 2022-08-13 16:07  后跳  阅读(45)  评论(0编辑  收藏  举报