C# 基础之Linq编程

图片来自 siki学院侵删

在这里插入图片描述

样例代码

//初始化武林高手
var master = new List<MartialArtsMaster>(){
               new MartialArtsMaster(){ Id = 1, Name = "黄蓉",    Age = 18, Menpai = "丐帮", Kongfu = "打狗棒法",  Level = 9  },
               new MartialArtsMaster(){ Id = 2, Name = "洪七公",  Age = 70, Menpai = "丐帮", Kongfu = "打狗棒法",  Level = 10 },
               new MartialArtsMaster(){ Id = 3, Name = "郭靖",    Age = 22, Menpai = "丐帮", Kongfu = "降龙十八掌",Level = 10 },
               new MartialArtsMaster(){ Id = 4, Name = "任我行",  Age = 50, Menpai = "明教", Kongfu = "葵花宝典",  Level = 1  },
               new MartialArtsMaster(){ Id = 5, Name = "东方不败",Age = 35, Menpai = "明教", Kongfu = "葵花宝典",  Level = 10 },
               new MartialArtsMaster(){ Id = 6, Name = "林平之",  Age = 23, Menpai = "华山", Kongfu = "葵花宝典",  Level = 7  },
               new MartialArtsMaster(){ Id = 7, Name = "岳不群",  Age = 50, Menpai = "华山", Kongfu = "葵花宝典",  Level = 8  },
               new MartialArtsMaster() { Id = 8, Name = "令狐冲", Age = 23, Menpai = "华山", Kongfu = "独孤九剑", Level = 10 },
               new MartialArtsMaster() { Id = 9, Name = "梅超风", Age = 23, Menpai = "桃花岛", Kongfu = "九阴真经", Level = 8 },
               new MartialArtsMaster() { Id =10, Name = "黄药师", Age = 23, Menpai = "梅花岛", Kongfu = "弹指神通", Level = 10 },
               new MartialArtsMaster() { Id = 11, Name = "风清扬", Age = 23, Menpai = "华山", Kongfu = "独孤九剑", Level = 10 }
           };
           //初始化武学
           var kongfu = new List<Kongfu>(){
               new Kongfu(){KongfuId=1, KongfuName="打狗棒法", Lethality=90},
               new Kongfu(){KongfuId=2, KongfuName="降龙十八掌", Lethality=95},
               new Kongfu(){KongfuId=3, KongfuName="葵花宝典", Lethality=100},
               new Kongfu() { KongfuId=  4, KongfuName = "独孤九剑", Lethality = 100 },
               new Kongfu() { KongfuId = 5, KongfuName = "九阴真经", Lethality = 100 },
               new Kongfu() { KongfuId = 6, KongfuName = "弹指神通", Lethality = 100 }
           };

           //var res = from m in master
           //          where m.Age > 24 && m.Menpai == "丐帮"
           //          select m.Name + " " + m.Age;
           //var res = master.Where(m => m.Age > 24 && m.Menpai == "丐帮").Select(m => m.Name + " " + m.Age);
           //联合查询
           //var res = from m in master
           //    from k in kongfu
           //    where m.Kongfu == k.KongfuName && k.Lethality > 95
           //    select new {MartialArtsMaster = m, Kongfu = k};
           
           //var res = from m in master
           //    from k in kongfu    
           //    where m.Kongfu == k.KongfuName && k.Lethality > 95 && m.Age > 24
           //    select m.Name + " " + m.Menpai + " " + m.Kongfu + " " + k.Lethality;    
           //var res = master.SelectMany(m => kongfu, (m, k) => new { master = m, kongfu = k }).Where(m =>
           //      m.master.Kongfu == m.kongfu.KongfuName && m.kongfu.Lethality > 95 && m.master.Age > 24).Select(m =>
           //      m.master.Name + " " + m.master.Menpai + " " + m.master.Kongfu + " " + m.kongfu.Lethality);
           
           //var res = from m in master
           //    where m.Age > 24
           //    orderby m.Age descending, m.Level
           //    select m;
           //var res = master.Where(m => m.Age > 24).OrderByDescending(m => m.Age).ThenBy(m => m.Level);

           //var res = from m in master
           //          join k in kongfu on m.Kongfu equals k.KongfuName
           //          where m.Age > 24
           //          orderby m.Age descending, m.Level
           //          select new { master = m, kongfu = k };
           //var res = master.Join(kongfu, m => m.Kongfu, k => k.KongfuName, (m, k) => new {master = m, kongfu = k})
           //    .Where(r => r.master.Age > 24).OrderByDescending(r => r.master.Age).ThenBy(r => r.master.Level);
           //var res = from m in master
           //    group m by m.Menpai
           //    into g
           //    orderby g.Count() descending 
           //    select g;
           var res = master.GroupBy(m => m.Menpai).OrderByDescending(g => g.Count());
           //var res = master.Any(m => m.Menpai == "丐帮");
           //var res = master.All(m => m.Menpai == "丐帮");
           //foreach (string r in res)
           //{
           //    Console.WriteLine(r);
           //}
           foreach (var m in res)
           {
               Console.WriteLine(m.Key + ":" + m.Count() + ":");
           }
class Kongfu
   {
       public int KongfuId { get; set; }
       public string KongfuName { get; set; }
       public int Lethality { get; set; }
       public override string ToString()
       {
           return $"{nameof(KongfuId)}: {KongfuId}, {nameof(KongfuName)}: {KongfuName}, {nameof(Lethality)}: {Lethality}";
       }
   }
class MartialArtsMaster
   {
       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 $"{nameof(Id)}: {Id}, {nameof(Name)}: {Name}, {nameof(Age)}: {Age}, {nameof(Menpai)}: {Menpai}, {nameof(Kongfu)}: {Kongfu}, {nameof(Level)}: {Level}";
       }
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值