namespace c_sharp_practice05
{classProgram{staticvoidMain(string[] args){//初始化武林高手var masterList =newList<MartialArtsMaster>(){newMartialArtsMaster(){ Id =1, Name ="黃蓉", Age =18, Menpai ="丐幫", Kungfu ="打狗 棒法", Level =9},newMartialArtsMaster(){ Id =2, Name ="洪七公", Age =70, Menpai ="丐幫", Kungfu ="打狗 棒法", Level =10},newMartialArtsMaster(){ Id =3, Name ="郭靖", Age =22, Menpai ="丐幫", Kungfu ="降龍 十八掌",Level =10},newMartialArtsMaster(){ Id =4, Name ="任我行", Age =50, Menpai ="明教", Kungfu ="葵花 寶典", Level =1},newMartialArtsMaster(){ Id =5, Name ="東方不敗",Age =35, Menpai ="明教", Kungfu ="葵花 寶典", Level =10},newMartialArtsMaster(){ Id =6, Name ="林平之", Age =23, Menpai ="華山", Kungfu ="葵花 寶典", Level =7},newMartialArtsMaster(){ Id =7, Name ="嶽不羣", Age =50, Menpai ="華山", Kungfu ="葵花 寶典", Level =8},newMartialArtsMaster(){ Id =8, Name ="令狐沖", Age =23, Menpai ="華山", Kungfu ="獨孤 九劍", Level =10},newMartialArtsMaster(){ Id =9, Name ="梅超風", Age =23, Menpai ="桃花島", Kungfu ="九 陰真經", Level =8},newMartialArtsMaster(){ Id =10, Name ="黃藥師", Age =23, Menpai ="梅花島", Kungfu ="彈 指神通", Level =10},newMartialArtsMaster(){ Id =11, Name ="風清揚", Age =23, Menpai ="華山", Kungfu ="獨 孤九劍", Level =10}};//初始化武學var kungfuList =newList<Kungfu>(){newKungfu(){KungfuId=1, KungfuName="打狗棒法", KungfuPower=90},newKungfu(){KungfuId=2, KungfuName="降龍十八掌", KungfuPower=95},newKungfu(){KungfuId=3, KungfuName="葵花寶典", KungfuPower=100},newKungfu(){ KungfuId=4, KungfuName ="獨孤九劍", KungfuPower =100},newKungfu(){ KungfuId =5, KungfuName ="九陰真經", KungfuPower =100},newKungfu(){ KungfuId =6, KungfuName ="彈指神通", KungfuPower =100}};}}}
10.1 過濾操作符
namespace c_sharp_practice05
{classProgram{staticvoidMain(string[] args){//初始化武林高手//初始化武學//查詢所有武學級別大於8的武林高手//使用LINQ查詢//1.表達式寫法var res1 =from m in masterList//from後面設置查詢的集合where m.Level >8&& m.Menpai=="丐幫"//where後接查詢的條件,&&接並列的條件//select m;//表示m的結果集合返回select m.Name;foreach(var temp in res1){
Console.WriteLine(temp);}//2.擴展方法寫法//var res2 = masterList.Where(Text1);var res2 = masterList.Where(m=>m.Level>8&&m.Menpai=="丐幫");//擴展方法習慣寫爲匿名方法(用Lambda表達式表示)foreach(var temp in res2){
Console.WriteLine(temp);}
Console.ReadKey();}staticboolText1(MartialArtsMaster master){if(master.Level >8)returntrue;elsereturnfalse;}}}
10.2 投影操作符
namespace c_sharp_practice05
{classProgram{staticvoidMain(string[] args){//初始化武林高手//初始化武學//3.LINQ聯合查詢var res3 =from m in masterList
from k in kungfuList
//select new { master = m, kungfu = k };where m.Kungfu == k.KungfuName && k.KungfuPower >90select m;foreach(var temp in res3){
Console.WriteLine(temp);}//4.LINQ聯合查詢擴展方法var res4 = masterList.SelectMany(m => kungfuList,(m, k)=>new{ master = m, kungfu = k }).Where(x => x.master.Kungfu == x.kungfu.KungfuName && x.kungfu.KungfuPower >90);foreach(var temp in res4){
Console.WriteLine(temp);}
Console.ReadKey();}}}
namespace c_sharp_practice05
{classProgram{staticvoidMain(string[] args){//初始化武林高手//初始化武學//6.join on集合聯合var res7 =from m in masterList
join k in kungfuList
on m.Kungfu equals k.KungfuNamewhere k.KungfuPower >90selectnew{ master = m, kungfu = k };}}}
10.5 分組操作符
namespace c_sharp_practice05
{classProgram{staticvoidMain(string[] args){//初始化武林高手//初始化武學//查詢每種功法的修行人數//7.into groups分組查詢//分組後可以得到每種功法的屬性var res8 =from k in kungfuList
join m in masterList on k.KungfuName equals m.Kungfuinto groups
orderby groups.Count()selectnew{ kungfu = k, count = groups.Count()};foreach(var temp in res8){//Console.WriteLine(temp);}//8.group by按照自身的字段分組//得不到每種功法的屬性var res9 =from m in masterList
group m by m.Menpaiinto g
selectnew{ count = g.Count(), key = g.Key };//g.key key表示按照哪個屬性分組foreach(var temp in res9){
Console.WriteLine(temp);}}}}