ASP.NET错误处理:Runtime Error
转换:
1: int i = 3; 2:
3: long l = i; // 静态转换 int->long 4:
5: int i2 = (int) l; // 静态转换 long->int 我们可以通过使用OfType或者Cast将一个ints序列转换为longs序列来演示静态转换问题: 1: int[] integers = { 1, 2, 3 }; 2:
3: IEnumerable<long> test1 =integers.OfType<long>(); 4:
5: IEnumerable<long> test2 =integers.Cast<long>(); 枚举test1最终的到0个元素, 而枚举test2则得到一个异常, 上面提到的OfType和Cast的各自内部实现已经很清楚的解释了为什么会得到这样的结果. 不过就像我们之前建议的, 可以使用Select来实现静态类型转换的目的: 1: IEnumerable<long> castLong = integers.Select (s => (long) s); OfType和Cast对过滤一个泛型输入序列的向下类型元素是非常有用的. 例如如果你有一个输入序列类型是IEnumerable, OfType将只会返回apple类型的元素. 这一点尤其在LINQ to XML当中更加有用. ToArray, ToList, ToDictionary, ToLookup ToArray和ToList将一个结果集转成一个数组或者泛型列表. 这些操作符会使输入序列立即执行枚举操作(除非是在间接的子查询或者表达式树上) ToDictionary和ToLookup接受如下的参数: 输入序列: IEnumerable 键选择器(key selector): TSource => TKey 元素选择器(可选): TSource => TElement Comparer(可选): IEqualityComparer ToDictionary同样也会引起一个立即执行将结果写入一个泛型Dictionary. keySelector表达式必须评估输入序列每个元素的唯一性, 否则将会得到一个异常. 相反, ToLookup允许多个元素拥有相同的键. AsEnumerable与AsQueryable AsEnumerable将一个序列向上转换为一个IEnumerable, 强制将Enumerable类下面的查询操作符绑定到后续的子查询当中. AsQueryable将一个序列向下转换为一个IQueryable, 它生成了一个本地查询的IQueryable包装 待续! |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |