Linq:并非只针对于集合,它已作用于数据库,XML文件,WebService......但所有的Linq都使用统一的查询表达式:
var excellent=from s in students --students是一个集合,必须是IEnumerable或它的子类
where score>80 --所有能够返回bool值的表达式都可以作为where条件
select s --以select或group结尾
Linq的查询表达式只是一个表达式,并不存储查询结果,直到被foreach调用(调用Tolist(),Toarry()也可强制立即执行);
分组(group by):将具有相同属性的元素归为一组:
var groupMajor=from m in Majors
group m by m.Teacher
foreach(var item in groupMajor)
{
Consol.WriteLine(item.Key.Name); --分组后才有Key(分组依据(Teacher))
foreach(var i in item) --根据当前老师来取出对应的课程集合
{
Consol.WriteLine(i.Name); --迭代出课程名字
}
}
投影(select):从结果集中取出/添加若干属性并重新组合成新的集合:
var groupMajor=from m in Majors
group m by m.Teacher --根据老师分组
into tm --给结果集命名
select new Dictionary<string,int> --利用投影
{
gm.Key.Name, --老师名字
gm.count() --每个老师上教了几门课程
}