IQueryable 提供对数据类型已知的特定数据源的查询计算的功能
2011-07-04 16:05
253 查看
/*1.使用Enumerable.Aggregate<TSource, TAccumulate, TResult> 方法: 对序列应用累加函数,将指定的种子作为初始值,并且使用指定的函数选择结构值*/ string[] fruits= { "APPLE","banana","Pear","PEACH","watermelon" }; //初始值为Apple, //指定的函数用Lambda // 但是我这里有个疑问,这样选择之后只能有一个值,其实banana长度其实也是大于apple的,但是它的原理是用func结果替换以前的结果,要是能够返回结果集就好啦! string result= fruits.Aggregate ("APPLE" , (start, end) => end.Length > start.Length ? start = end : start ); Console.WriteLine(result); /*2.使用IQueryable.Cast<TResult> 方法 :将IQueryable元素转换为指定的类型*/ List<object> list = new List<object>() { "Apple", "Pear", "Orange" }; IEnumerable<string> T = list.AsQueryable().Cast<string>(); foreach (var t in T) { Console.WriteLine(t); } /*3.Enumerable.Concat(TSource)方法: 连接两个序列*/ class pet { public string name { get; set; } public int age { get; set; } static pet[] getDogs() { pet[] dogs ={ new pet{name="aa",age=2}, new pet{name="bb",age=3}, new pet{name="cc",age=4}, }; return dogs; } static pet[] getCats() { pet[] cats ={ new pet{name="dd",age=3}, new pet{name="ee",age=5}, new pet{name="ff",age=6}, }; return cats; } static void Main() { pet [] cats=getCats(); pet [] dogs=getDogs(); IEnumerable<string> query = cats.Select(cat => cat.name).Concat(dogs.Select(dog => dog.name)); //下面的这个方法也可以 //IEnumerable<string> query = cats.AsQueryable().Select(cat => cat.name).Concat(dogs.Select(dog => dog.name)); foreach (var v in query) { Console.WriteLine(v); } } } /*4.Enumerable.Distinct(TSource) 方法:返回非重复的元素*/ List<int> list = new List<int> { 12, 34, 56, 34, 89, 9, 12 }; IEnumerable<int> query = list.Distinct(); foreach (var v in query) { Console.WriteLine(v); } /*5.Enumerable.GroupBy<TSource,TKey> 方法:根据指定的键选择器函数对序列中的元素进行分组*/ public string name { get; set; } public int age { get; set; } static void Main() { List<pet> pets = new List<pet> { new pet{name="aa",age=24}, new pet{name="bb",age=28}, new pet{name="cc",age=25}, new pet{name="dd",age=28}, new pet{name="ee",age=24}, new pet{name="ff",age=28} }; var query = pets.AsQueryable().GroupBy(p => p.age); foreach (var v in query) { Console.WriteLine("key:{0},numbers of pet:{1}", v.Key, v.Count()); }
相关文章推荐
- 查询组中包含特定类型不包含特定类型的数据
- 发布NBearLite v1.0.0: 提供强类型查询语法的非ORM数据访问组件 [8/2 更新至v1.0.0.9 beta - 修复NBearLite参考手册某些操作系统打开错误的问题]
- 发布NBearLite v1.0.0: 提供强类型查询语法的非ORM数据访问组件 [8/2 更新至v1.0.0.9 beta - 修复NBearLite参考手册某些操作系统打开错误的问题]
- 创建 MapReduce 查询来处理特定类型的数据
- oracle查询表中某一特定类型的数据特别慢,也没找到原因
- 发布NBearLite v1.0.0: 提供强类型查询语法的非ORM数据访问组件 [8/2 更新至v1.0.0.9 beta - 修复NBearLite参考手册某些操作系统打开错误的问题]
- php+mysql计算某个已知经纬度周围几公里数据查询处理方法
- 什么是数据源,DataSource,数据源就是 :任意数据集合的抽象。它提供该数据的类型,并在适当的时候以 InputStream 和 OutputStream 的形式提供对该数据的访问。
- ALTER TABLE 失败,因为下列 SET 选项的设置不正确:'ARITHABORT'。请确保 SET 选项可正确用于计算列和/或查询通知和/或 xml 数据类型方法的索引视图和/或索引。
- MySQL中数据结果集分页功能的实现方法;数据库查询返回特定结果即分页查询
- ofbiz的webservice接口提供(4)-支持复杂数据类型方法
- DataTable 更改在有数据列的类型方法+DataTable 导出excel功能
- 从excel文件中获得数据,实现网站的批量查询数据功能
- js数值计算时使用parseInt进行数据类型转换(jquery)
- ofbiz的webservice接口提供(2)-数据类型的局限性
- Oracle查询数据表结构/字段/类型/大小
- sql查询字段以及数据类型
- jQuery从服务器获取数据使用post(字典查询的功能),服务器端php返回数据
- asp.net查询数据库时提示使用的sql server版本不支持数据类型date