LINQ查找:
using System.linq;
var res=from m in MasterList from后面设置查询的集合
where m.Level>8 && m.MenPai=="丐帮" where后面跟上查询的条件
select m; 表示m的结果集合返回
扩展方法的写法:
var res=MasterList.Where(m=>m.Level>8 && m.MenPai=="丐帮") 参数是一个返回值是bool,带一个相对应类型的参数的委托Func<MartialArtMaster,bool>,Lambda表达式
LINQ联合查询:
var res=from m in MasterList 查找大侠所学功夫的杀伤力大于95 联合查询是第一个集合的全部分别对应另一个集合的内容
from k in KongFuList
where m.Kongfu==k.Kongfu && k.Power>95
select m; (select new{master=m,kongfu=k};)输出所有对应的集合的内容
扩展方法的写法(联合查询):
var res=masterList.SelectMany(m=>kongfuList,(m,k)=>new {master=m,kongfu=k}).Where(x=>x.master.Kongfu==x.Kongfu.Name && x.kongfu.Power>95)
对查询结果做排序:orderby(descending)
var res=from m in MasterList
where(m.Level>8 && m.MenPai=="MenPai")
orderby m.Level,m.Age 按照多个字段进行排序,如果字段的属性相当,就按照第二属性排序(从小到大,后面加上descending从大到小)
select m;
扩展方法排序:
var res=MasterList.Where(m=>m.Level>8 && m.MenPai=="丐帮").OrderBy(m=>m.Age) 以m.Age排序
var res=MasterList.Where(m=>m.Level>8 && m.MenPai=="丐帮").OrderBy(m=>m.Age).ThenBy(m=>m.Level);先以m.Age排序,在Age相同的情况下,在以Level排序
join on集合联合:
var res=from m in MasterList
join k in KongfuList on m.Kongfu equals k.Name join后面加联合的集合,on后面加条件
where m.Level>8
select new{master=m,kongfu=k};
into Group分组查询(把武林高手按所学功夫分类,看哪一个功夫修炼人数最多)
var res=from k in KongfuList
join m in MasterList on k.Name equal m.Kongfu
into groups 后面的集合按前面的集合分组,必须符合多对一关系
orferby groups.Count()
select new {kongfu=k,count=groups.Count()};
按自身字段分组 group by
量词操作符 any all 判断集合中是否满足某个条件
bool res=MasterList.Any(m=>m.MenPai=="丐帮"); 判断这个集合中有没有门派属于丐帮的,有则返回true
bool res=MasterList.All(m=>m.MenPai=="丐帮"); 判断这个集合中门派是否都是属于丐帮,是则返回true