• C# LINQ


    1. 自定义 Master,Kongfu 类

     1 class Master
     2 {
     3 
     4     public int Id { get; set; }
     5     public string Name { get; set; }
     6     public int Age { get; set; }
     7     public string MenPai { get; set; }
     8     public string Kongfu { get; set; }
     9     public int Level { get; set; }
    10 
    11     public override string ToString()
    12     {
    13         return string.Format("Id:{0},Name:{1},Age:{2},MenPai:{3},Kongfu:{4},Level:{5}", Id, Name, Age,MenPai,Kongfu,Level);
    14     }
    15 }
     1 class Kongfu
     2 {
     3     public int Id { get; set; }
     4     public string Name { get; set; }
     5     public int Power { get; set; }
     6 
     7     public override string ToString()
     8     {
     9         return string.Format("Id:{0},Name:{1},Power:{2}", Id, Name, Power);
    10     }
    11 }

    2. 测试代码

      1 class Program
      2 {
      3     static void Main(string[] args)
      4     {
      5         var master = new List<Master>()
      6         {
      7             new Master() { Id = 100, Age = 100, Kongfu = "九阳神功",Level=10,MenPai="华山",Name="李二狗" },
      8             new Master() { Id = 50, Age = 10, Kongfu = "九阳神功1" ,Level=5,MenPai="华山",Name="李大狗"},
      9             new Master() { Id = 200, Age = 60, Kongfu = "九阳神功2",Level=6,MenPai="华山",Name="李狗蛋" },
     10         };
     11 
     12         var kongfu = new List<Kongfu>()
     13         {
     14             new Kongfu(){Id=1,Name="打狗棒法",Power=90},
     15             new Kongfu(){Id=2,Name="打狗棒法1",Power=30},
     16             new Kongfu(){Id=3,Name="打狗棒法2",Power=20},
     17         };
     18           
     19         //使用LINQ做查询(表达式写法)
     20         var res1 = from m in master   //from后面设置查询的集合
     21                     where m.Level > 8     //where跟上条件
     22 
     23                     select m;//表示m的结果
     24         //select m.Name;  //只输出名字
     25 
     26       
     27         //多个条件
     28         var res3 = from m in master
     29 
     30                     where m.Level > 8 && m.MenPai == "丐帮"
     31 
     32                     select m;
     33 
     34         var res4 = master.Where(m => m.Level > 8 && m.MenPai == "丐帮");
     35 
     36         //LINQ联合查询
     37         var res5 = from m in master
     38                     from k in kongfu
     39                     where m.Kongfu==k.Name
     40                     select new { master = m, kongfu = k };
     41                     //select m;
     42         foreach (var temp in res)
     43         {
     44             Console.WriteLine(temp);
     45         }
     46 
     47         //join on 联合查询
     48         var res12 = from m in master
     49                     join k in kongfu on m.Kongfu equals k.Name
     50                     where k.Power>90
     51                     select new { master = m, kongfu = k };
     52 
     53 
     54         //对查询结果升序排序
     55         var res7 = from m in master
     56 
     57                     where m.Level > 8 && m.MenPai == "丐帮"
     58                     orderby m.Age
     59 
     60                     select m;
     61 
     62         //对查询结果倒序排序
     63         var res8 = from m in master
     64 
     65                     where m.Level > 8 && m.MenPai == "丐帮"
     66                     orderby m.Age descending
     67 
     68                     select m;
     69 
     70         //对查询结果升序排序
     71         var res9 = from m in master
     72 
     73                     where m.Level > 8 && m.MenPai == "丐帮"
     74                     orderby m.Age,m.Level //按照多个字段进行排序,如果字段的属性相同,就按照第二个属性排序
     75 
     76                     select m;
     77 
     78         var res10 = master.Where(m => m.Level > 8 && m.MenPai == "丐帮").OrderBy(m => m.Age);
     79         var res11 = master.Where(m => m.Level > 8 && m.MenPai == "丐帮").OrderBy(m => m.Age).ThenBy(m=>m.Level);
     80 
     81 
     82 
     83         //把人物按照所学功夫进行分类,看下哪个功夫修炼人数最多(分组查询)
     84         var res13 = from k in kongfu
     85                     join m in master on k.Name equals m.Kongfu
     86                     into groups
     87                     orderby groups.Count()
     88                     select new { kongfu = k,count=groups.Count()};
     89 
     90         //按照字段分组
     91         var res14 = from m in master
     92                     group m by m.MenPai
     93                     into g
     94                     select new { count=g.Count(),key=g.Key}; //g.Key按照哪个属性分组
     95 
     96         //量词操作符any all判断集合中是否满足某个条件
     97         bool res15=master.Any(m => m.MenPai == "丐帮");
     98         Console.WriteLine(res15);//只要有一个满足返回true
     99 
    100         bool res16=master.All(m => m.MenPai == "丐帮");//所有都满足才返回true
    101 
    102 
    103 
    104         Console.ReadKey();
    105     }
    106 
    107     //过滤方法
    108     static bool Test1(Master m)
    109     {
    110         if (m.Level > 8) return true;
    111         return false;
    112     }
    113 }
  • 相关阅读:
    Linux常用
    Netty实战八之引导
    Netty实战九之单元测试
    Netty实战七之EventLoop和线程模型
    作为团队技术负责人,我是这样面试前端的
    Netty实战六之ChannelHandler和ChannelPipeline
    Netty实战五之ByteBuf
    Netty实战四之传输
    Netty实战三之Netty的组件和设计
    Netty实战二之自己的Netty应用程序
  • 原文地址:https://www.cnblogs.com/coderJiebao/p/CSharp02.html
Copyright © 2020-2023  润新知