2009年10月7日
摘要: 本章前面提到,查询可以推迟到访问数据项时再执行。 在迭代中使用查询,查询会执行。而使用转换操作符会立即执行查询,把结果放在数组、列表或字典中。 在下面的例子中,调用ToList()扩展方法,立即执行查询,把结果放在List<T>中: private static void Conversion() { // query executed immediately List<Ra... 阅读全文
posted @ 2009-10-07 19:05 冯瑞涛 阅读(6162) 评论(0) 推荐(0) 编辑
摘要: 合计操作符如Count()、Sum()、Min()、Max()、Average()和Aggregate(),不返回一个序列,而返回一个值。 Count()扩展方法返回集合中的项数。下面的Count()方法应用于Racer 的Years 属性,过滤赛手,只返回 获得冠军次数超过3 次的赛手: private static void QuantifiersCount() { var racers = ... 阅读全文
posted @ 2009-10-07 18:37 冯瑞涛 阅读(1006) 评论(0) 推荐(0) 编辑
摘要: 扩展方法Take()和Skip()等的分区操作可用于分页,例如显示5×5 个赛手。 在下面的LINQ 查询中,扩展方法Take()和Skip()添加到查询的最后。 Skip()方法先忽略根据页面的大小和实际的页数计算出的项数, 再使用方法Take()根据页面的大小提取一定数量的项:   private static void Partitioning() { int pageSi... 阅读全文
posted @ 2009-10-07 18:28 冯瑞涛 阅读(3774) 评论(1) 推荐(0) 编辑
摘要: 扩展方法Distinct()两个集合中的每一个列出了一次(唯一)、Union()并、Intersect()交和Except()差都是设置操作。下面创建一个驾驶Ferrari 的一级方程 式冠军序列和驾驶McLaren 的一级方程式冠军序列,然后确定是否有驾驶Ferrari 和McLaren 的冠军(交集)。当然, 这里可以使用Intersect()扩展方法。 首先获得所有驾驶Ferrari 的冠军... 阅读全文
posted @ 2009-10-07 14:29 冯瑞涛 阅读(1099) 评论(0) 推荐(0) 编辑
摘要: 使用 join 子句可以根据特定的条件合并两个数据源,但之前要获得两个要连接的列表。 在一级方程式比 赛中,设有赛手冠军和制造商冠军。 赛手从GetChampions()方法中返回,制造商从GetConstructorChampions() 方法中返回。 现在要获得一个年份列表,列出每年的赛手和制造商冠军。 为此,先定义两个查询,用于查询赛手和制造商团队: 车手集合结构:new Racer() ... 阅读全文
posted @ 2009-10-07 13:27 冯瑞涛 阅读(6185) 评论(1) 推荐(4) 编辑
摘要: 分组要根据一个关键字值对查询结果分组,可以使用 group 子句。现在要实现一级方程式冠军应按照国家分组,并列出每个国家的冠军数。子句 group r by r.Country into g 根据Country 属性组合所有的赛手,并定义一个新的 标识符 g,它以后用于访问分组的结果信息。group 子句的结果根据应用到分组结果上的扩展方法 Count()来排序,如果冠军数相同,就根据关键字来排序... 阅读全文
posted @ 2009-10-07 11:58 冯瑞涛 阅读(8274) 评论(2) 推荐(0) 编辑