LINQ

分组查询:根据一个关键字对查询结果分组,可以使用 group 子句。

var countries = from r in Formula1.GetChampions()
		group r by r.Country into g
		orderby g.Count() descend,g.Key
		where g.Count() >=2
		select new 
		{
			Country = g.Key,
			Count = g.Count();
		};
foreach (var item in countries)
{
	Console.WriteLine(“{0,-10} {1}”,item.Country,item.Count);
}

如果需要根据对象的一个成员进行筛选,而该成员本身是一个系列,就可以使用复合的from子句。

var ferrarDrivers = from r in Formula1.GetChampions()
				from c in r.Cars
				where c == “Ferrari”
				orderby r.LastName
				select r.FirstName + “ ” + r.LastName;

类型筛选

Object[] data = { “one”,2,3,”four”,”five”,6 };
var query = data.OfType<string>();
foreach(var s in query)
{
	Console.WriteLine(s);
}

索引筛选

var racers = Formula1.GetChampions().
	Where((r,index)=>r.LastName.StartsWith(“A”) && index % 2 != 0);
foreach(var r in races)
{
	Console.WriteLine(“{0:A}”,r);
}
标准查询操作符说明
Where OfType筛选操作符定义了返回元素的条件。在 Where查询操作符中,可以使用谓词,例如Lambda表达式定义的谓词,来返回布尔值。OfType根据类型筛选元素,只返回TResult类型的元素
Select 和 SelectMany投射操作符用于把对象转换为另一个类型的新对象。Select 和 SelectMany 定义了根据选择器函数选择结果值的投射
OrderBy、 ThenBy、 OrderByDescending、 ThenByDescending、 Reverse排序操作符改变所返回的元素的顺序。OrderBy 按升序排序,OrderByDescending 按降序排序。Reverse 反序排列
Join、 GroupJoin连接运算符用于合并不直接相关的集合。使用Join 操作符,可以根据键选择器函数连接两个集合,GroupJoin操作符连接两个集合,组合其结果

GroupBy、 ToLookUp 组合运算符把数据放在组中。GroupBy 操作符组合有公共键的元素。ToLookUp 通过创建一个一对多字典,来组合元素
Any、 All 、Contains(限定符操作符) | 如果元素序列满足指定的条件,量词操作符就返回布尔值。Any确定集合中是否有满足谓词函数的元素;All 确定集合中的所有元素都满足谓词函数。Contains 检查某个元素是否在集合中 |
Take、Skip、TakeWhile(分区操作符)| Take 必须指定要从集合中提取的元素个数;Skip 跳过指定的元素个数,提取其他元素;TakeWhile 提取条件为真的元素
Distinct、Union、Intersect、Except、Zip(Set操作符) Distinct 从集合中删除重复的元素。Zip 求合集,Union 求并集,Intersect全集,Except求非并集

First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Single、SingleOrDefault
Count、Sum、Min、Max、Average、Aggregate 聚合操作符
ToArray、ToEnumerable、ToList、ToDictionary、Cast 转换操作符
Empty、Range、Repeat 生成操作符返回一个新集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值