using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LINQ
{
//武林高手的类
class MartialArtsExperts
{
publicint Id { get; set; }
publicstring Name { get; set; }
publicint Age { get; set; }
publicstring Menpai { get; set; }
publicstring Kungfu { get; set;}
publicint Level { get; set; }
publicoverridestringToString()
{
returnstring.Format("Id:{0},Name:{1},Kungfu:{2},Level:{3},Age:{4}", Id, Name, Kungfu,Level,Age);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LINQ
{
//武学的类
class KongFu
{
publicint KongfuId { get; set; }
publicstring KongfuName { get; set; }
publicint Lethality { get; set; }
publicoverridestringToString()
{
returnstring.Format("Id:{0},Name:{1},Power:{2}",KongfuId,KongfuName,Lethality);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LINQ
{
class Program
{
staticbool Test1(MartialArtsExperts master)
{
return master.Level > 8;
}
staticvoid Main(string[] args)
{
//初始化武林高手var masterList = new List<MartialArtsExperts>()
{
new MartialArtsExperts(){ Id = 1, Name = "黄蓉", Age = 18, Menpai = "丐帮", Kungfu = "打狗棒法", Level = 9 },
new MartialArtsExperts(){ Id = 2, Name = "洪七公", Age = 70, Menpai = "丐帮", Kungfu = "打狗棒法", Level = 10 },
new MartialArtsExperts(){ Id = 3, Name = "郭靖", Age = 22, Menpai = "丐帮", Kungfu = "降龙十八掌",Level = 10 },
new MartialArtsExperts(){ Id = 4, Name = "任我行", Age = 50, Menpai = "明教", Kungfu = "葵花宝典", Level = 1 },
new MartialArtsExperts(){ Id = 5, Name = "东方不败",Age = 35, Menpai = "明教", Kungfu = "葵花宝典", Level = 10 },
new MartialArtsExperts(){ Id = 6, Name = "林平之", Age = 23, Menpai = "华山", Kungfu = "葵花宝典", Level = 7 },
new MartialArtsExperts(){ Id = 7, Name = "岳不群", Age = 50, Menpai = "华山", Kungfu = "葵花宝典", Level = 8 },
new MartialArtsExperts() { Id = 8, Name = "令狐冲", Age = 23, Menpai = "华山", Kungfu = "独孤九剑", Level = 10 },
new MartialArtsExperts() { Id = 9, Name = "梅超风", Age = 23, Menpai = "桃花岛", Kungfu = "九阴真经", Level = 8 },
new MartialArtsExperts() { Id =10, Name = "黄药师", Age = 23, Menpai = "梅花岛", Kungfu = "弹指神通", Level = 10 },
new MartialArtsExperts() { Id = 11, Name = "风清扬", Age = 23, Menpai = "华山", Kungfu = "独孤九剑", Level = 10 }
};
//初始化武学var kongfuList = 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 }
};
//1.查詢所有武學級別大於8,并且是丐帮的武林高手//使用LINQ做查询(表达式写法)var res1 = from m in masterList//from後面設置查詢的集合where m.Level > 8 &&m.Menpai=="丐帮"//設置查詢條件select m.Name;//返回m的結果foreach (var s in res1)
{
Console.WriteLine(s);
}
//2.扩充方式写法var res2 = masterList.Where(Test1);
foreach (var s in res2)
{
Console.WriteLine(s);
}
//3.联合查询var res3 = from m in masterList
from k in kongfuList
where m.Kungfu == k.KongfuName
select m;
foreach (var s in res3)
{
Console.WriteLine(s);
}
//4.排序orderbyvar res4 = from m in masterList//from後面設置查詢的集合where m.Level > 8 && m.Menpai == "丐帮"//設置查詢條件//orderby m.Age descending//倒序orderby m.Level, m.Age//等级相同则按下一个字段排序select m;//返回m的結果foreach (var s in res4)
{
Console.WriteLine(s);
}
//5.join on 联合查询var res5 = from m in masterList
join k in kongfuList on m.Kungfu equals k.KongfuName
where k.Lethality > 90selectnew { master = m, kongfu = k };
foreach (var s in res5)
{
Console.WriteLine(s);
}
//6.按照自身字段分组groupvar res6 = from m in masterList
group m by m.Menpai into g
selectnew { count = g.Count(), key = g.Key };//g.key,key表示按照哪个属性分的组foreach (var item in res6)
{
Console.WriteLine(item);
}
//7.量词操作符 any all判断集合中是否满足某个条件bool res7 = masterList.Any(m=>m.Menpai=="丐帮");//any只要其中有一个满足就好bool res8 = masterList.All(m=>m.Menpai=="丐帮");
}
}
}