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)!