static void Main(string[] args)
{
List<MartialArtMaster> martialArts = new List<MartialArtMaster>()
{
new MartialArtMaster(){ID=1, Name="郭靖", Age=30, Kongfu="降龙十八掌", Menpai="丐帮",Level=10 },
new MartialArtMaster(){ID=2, Name="黄蓉", Age=30, Kongfu="打狗棒法", Menpai="丐帮",Level=9 },
new MartialArtMaster(){ID=3, Name="洪七公", Age=30, Kongfu="打狗棒法", Menpai="丐帮",Level=10 },
new MartialArtMaster(){ID=4, Name="任我行", Age=30, Kongfu="葵花宝典", Menpai="明教",Level=1 },
new MartialArtMaster(){ID=5, Name="东方不败", Age=30, Kongfu="葵花宝典", Menpai="明教",Level=10 },
new MartialArtMaster(){ID=6, Name="岳不群", Age=30, Kongfu="葵花宝典", Menpai="华山",Level=7 },
new MartialArtMaster(){ID=7, Name="令狐冲", Age=30, Kongfu="独孤九剑", Menpai="华山",Level=10 },
new MartialArtMaster(){ID=8, Name="黄药师", Age=30, Kongfu="弹指神通", Menpai="桃花岛",Level=10 },
new MartialArtMaster(){ID=9, Name="风清扬", Age=30, Kongfu="独孤九剑", Menpai="华山",Level=10 }
};
List<KongFu> kongFu = new List<KongFu>()
{
new KongFu(){ ID=1, Name="降龙十八掌", Power=99},
new KongFu(){ ID=2, Name="弹指神通", Power=80},
new KongFu(){ ID=3, Name="打狗棒法", Power=90},
new KongFu(){ ID=4, Name="葵花宝典", Power=95},
new KongFu(){ ID=5, Name="独孤九剑", Power=70}
};
Console.WriteLine("----------------------1.分割线(LINQ关联查询)------------------------");
//LINQ关联查询
var linqres = from m in martialArts
from k in kongFu
where m.Kongfu == k.Name && k.Power>90
select new { martialArt = m, kongfu = k };
foreach (var item in linqres)
{
Console.WriteLine(item);
}
Console.WriteLine("----------------------2.分割线(Lambda表达式查询)------------------------");
//Lambda表达式查询
var res= martialArts.SelectMany(t => kongFu, (t, k) => new { martialArt = t, kongfu = k })
.Where(x=>x.martialArt.Kongfu==x.kongfu.Name && x.kongfu.Power > 90);
foreach (var item in res)
{
Console.WriteLine(item);
}
Console.WriteLine("----------------------.分割线(LINQ join on集合联合)------------------------");
//LINQ join on集合联合
var linqJoin=from m in martialArts
join k in kongFu on m.Kongfu equals k.Name
where k.Power>90
select new { martialArt = m, kongfu = k };
foreach (var item in linqJoin)
{
Console.WriteLine(item);
}
}