LINQ

来源:互联网 发布:多线程编程demojava 编辑:程序博客网 时间:2024/06/08 15:36

分组查询:根据一个关键字对查询结果分组,可以使用 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 生成操作符返回一个新集合

原创粉丝点击