当前位置:首页 > C#教程 > C#高级

C# LINQ

1. 自定义 Master,Kongfu 类

                 1
                class
                 Master

                 2
                {

                 3
                 4
                public
                int Id { get; set; }
 5publicstring Name { get; set; }
 6publicint Age { get; set; }
 7publicstring MenPai { get; set; }
 8publicstring Kongfu { get; set; }
 9publicint Level { get; set; }
1011publicoverridestring ToString()
12    {
13returnstring.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; }
 4publicstring Name { get; set; }
 5publicint Power { get; set; }
 6 7publicoverridestring ToString()
 8    {
 9returnstring.Format("Id:{0},Name:{1},Power:{2}", Id, Name, Power);
10    }
11 }

 

 

2. 测试代码

                  1
                class
                 Program

                  2
                {

                  3
                static
                void Main(string[] args)
  4    {
  5var master = new List<Master>()
  6        {
  7new Master() { Id = 100, Age = 100, Kongfu = "九阳神功",Level=10,MenPai="华山",Name="李二狗" },
  8new Master() { Id = 50, Age = 10, Kongfu = "九阳神功1" ,Level=5,MenPai="华山",Name="李大狗"},
  9new Master() { Id = 200, Age = 60, Kongfu = "九阳神功2",Level=6,MenPai="华山",Name="李狗蛋" },
 10        };
 11 12var kongfu = new List<Kongfu>()
 13        {
 14new Kongfu(){Id=1,Name="打狗棒法",Power=90},
 15new Kongfu(){Id=2,Name="打狗棒法1",Power=30},
 16new Kongfu(){Id=3,Name="打狗棒法2",Power=20},
 17        };
 18 19//使用LINQ做查询(表达式写法) 20var res1 = from m in master   //from后面设置查询的集合 21where m.Level > 8//where跟上条件 22 23select m;//表示m的结果
 24//select m.Name;  //只输出名字
 25 26 27//多个条件 28var res3 = from m in master
 29 30where m.Level > 8 && m.MenPai == "丐帮" 31 32select m;
 33 34var res4 = master.Where(m => m.Level > 8 && m.MenPai == "丐帮");
 35 36//LINQ联合查询 37var res5 = from m in master
 38from k in kongfu
 39where m.Kongfu==k.Name
 40selectnew { master = m, kongfu = k };
 41//select m; 42foreach (var temp in res)
 43        {
 44            Console.WriteLine(temp);
 45        }
 46 47//join on 联合查询 48var res12 = from m in master
 49                     join k in kongfu on m.Kongfu equals k.Name
 50where k.Power>90 51selectnew { master = m, kongfu = k };
 52 53 54//对查询结果升序排序 55var res7 = from m in master
 56 57where m.Level > 8 && m.MenPai == "丐帮" 58orderby m.Age
 59 60select m;
 61 62//对查询结果倒序排序 63var res8 = from m in master
 64 65where m.Level > 8 && m.MenPai == "丐帮" 66orderby m.Age descending
 67 68select m;
 69 70//对查询结果升序排序 71var res9 = from m in master
 72 73where m.Level > 8 && m.MenPai == "丐帮" 74orderby m.Age,m.Level //按照多个字段进行排序,如果字段的属性相同,就按照第二个属性排序 75 76select m;
 77 78var res10 = master.Where(m => m.Level > 8 && m.MenPai == "丐帮").OrderBy(m => m.Age);
 79var res11 = master.Where(m => m.Level > 8 && m.MenPai == "丐帮").OrderBy(m => m.Age).ThenBy(m=>m.Level);
 80 81 82 83//把人物按照所学功夫进行分类,看下哪个功夫修炼人数最多(分组查询) 84var res13 = from k in kongfu
 85                     join m in master on k.Name equals m.Kongfu
 86                    into groups
 87orderby groups.Count()
 88selectnew { kongfu = k,count=groups.Count()};
 89 90//按照字段分组 91var res14 = from m in master
 92                    group m by m.MenPai
 93                    into g
 94selectnew { count=g.Count(),key=g.Key}; //g.Key按照哪个属性分组
 95 96//量词操作符any all判断集合中是否满足某个条件 97bool res15=master.Any(m => m.MenPai == "丐帮");
 98         Console.WriteLine(res15);//只要有一个满足返回true 99100bool res16=master.All(m => m.MenPai == "丐帮");//所有都满足才返回true101102103104        Console.ReadKey();
105    }
106107//过滤方法108staticbool Test1(Master m)
109    {
110if (m.Level > 8) returntrue;
111returnfalse;
112    }
113 }

 

原文:https://www.cnblogs.com/coderJiebao/p/CSharp02.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!