LINQ系列:Linq to Object转换操作符
转换是指将输入对象的类型转变为序列的动作。
1. AsEnumerable
AsEnumerable操作符将查询的输入以IEnumberable(T)类型返回。
2. Cast
Cast操作符将IEnumberable集合中的元素转换为指定的类型,当Cast运算符无法将源类型转换为目标类型时将抛出InvalidCastException。
from T e in s <=> from e in s.Cast<T>()
1>. 原型定义
public static IEnumerable<TResult> Cast<TResult>(this IEnumerable source);
2>. 示例
int[] fibonacci = new int[] { , , , , , , , };
foreach (int f in fibonacci.Cast<int>())
{
Console.WriteLine(f);
}
var expr = from f in fibonacci.Cast<int>()
select f;
var expr = from int f in fibonacci
select f;
from Product p in products
select p from p in products.Cast<Product>() products.Cast<Product>()
3. OfType
OfType操作符能够实现基于一个特定的类型对IEnumberable对象的元素进行过滤,OfType会遍历整个序列或集合,对全部元素进行过滤。
1>. 原型定义
public static IEnumerable<TResult> OfType<TResult>(this IEnumerable source);
2>. 示例
ArrayList complex = new ArrayList();
complex.Add("LINQ to Object");
complex.Add();
complex.Add("LINQ to ADO.NET");
complex.Add();
complex.Add("LINW to XML");
complex.Add(); var expr = complex.OfType<int>();
foreach (var item in expr)
{
Console.WriteLine(item);
}
4. ToArray
ToArray操作符用于实现从一个IEnumberable序列创建一个数组。
1>. 原型定义
public static TSource[] ToArray<TSource>(this IEnumerable<TSource> source);
2>. 示例
var expr = contex.Products
.Select(p => p.ProductName)
.ToArray(); foreach (var item in expr)
{
Console.WriteLine(item);
}
5. ToDictionary
ToDictionary操作符将序列中的所有返回元素插入到一个Dictionary(TKey, TValue)对象中。
1>. 原型定义
public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector);
2>. 示例
var expr = context.Provinces
.ToDictionary(c => c.ProvinceID, c => c.ProvinceName); foreach (var item in expr)
{
Console.WriteLine("{0}-{1}", item.Key, item.Value);
}
6. ToList
ToList操作符将一个IEnumberable序列集合转换为一个List<T>对象。
var expr = from c in contex.Categories
select new { c.CategoryID, c.CategoryName };
expr.ToList();
7. ToLookup
ToLookup操作符基于一个特定的主键,将返回的元素放置到一个Lookup(TKey TElement)对象中。Lookup是主键的集合,其中每个主键都映射到一个或多个值上。Lookup对象是一个一对多的字典。
var expr = contex.Categories
.ToLookup(c => c.CategoryID,c=> c.CategoryName ); foreach (var item in expr)
{
Console.WriteLine(item.Key); foreach (var i in item)
{
Console.WriteLine(i);
}
}
LINQ系列:Linq to Object转换操作符的更多相关文章
- LINQ系列目录
1. LINQ准备 1.1 C#中与LINQ相关特性 2. LINQ to Object 2.1 LINQ to Object投影操作符(Select/SelectMany/Let) 2.2 LINQ ...
- C# ~ 从 XML 到 Linq 到 Linq to XML
.XML 可扩展标记语言 (Extensible Markup Language), 标记 (markup) 是关键部分,是标准通用标记语言 (Standard Generalized Markup ...
- LINQ系列:Linq to Object集合操作符
集合操作符对元素的集合或序列集合进行操作,并返回一个集合.LINQ共有4种集合查询操作符:Distinct.Union.Intersect和Except. 1. Distinct Distinct操作 ...
- linq操作符:转换操作符
这些转换操作符将集合转换成数组:IEnumerable.IList.IDictionary等.转换操作符是用来实现将输入对象的类型转变为序列的功能.名称以"As"开头的转换方法可更 ...
- LinQ系列文章
温故而知新,想着系统再学习一次LinQ知识点,发现园子里有个非常棒的系列文章,所以Mark下来,方便以后查阅! 系列博客导航: LINQ之路系列博客导航 LINQ之路 1:LINQ介绍 LINQ之路 ...
- C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换
LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...
- RxJava系列3(转换操作符)
RxJava系列1(简介) RxJava系列2(基本概念及使用介绍) RxJava系列3(转换操作符) RxJava系列4(过滤操作符) RxJava系列5(组合操作符) RxJava系列6(从微观角 ...
- LINQ 系列
C#图解教程 第十九章 LINQ LINQ 什么是LINQLINQ提供程序 匿名类型 方法语法和查询语法查询变量查询表达式的结构 from子句join子句什么是联结查询主体中的from…let…w ...
- Linq系列
LINQ 图解 Linq中的Select——投影 Linq学习资源 Expert C# 5.0中的Linq部分
随机推荐
- HTML5 学习笔记(三)——本地存储
目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...
- topcoder SRM 628 DIV2 BishopMove
题目比较简单. 注意看测试用例2,给的提示 Please note that this is the largest possible return value: whenever there is ...
- 深入理解Spark(一):Spark核心概念RDD
RDD全称叫做弹性分布式数据集(Resilient Distributed Datasets),它是一种分布式的内存抽象,表示一个只读的记录分区的集合,它只能通过其他RDD转换而创建,为此,RDD支持 ...
- day 2 Linux基础
6.用户.群组和权限 1) 新建用户natasha,uid为1000,gid为555,备注信息为"master" useradd natasha usermod -u1000 na ...
- Smart3D系列教程4之 《案例实战演练1——小物件的照片三维重建》
一.前言 Wish3D出品的Smart3D系列教程已经推出3讲了,分别是关于倾斜摄影三维建模原理应用.照片采集技巧.Smart3D各个功能模块的作用,它们都是围绕Smart3D建模软件进行的讲解.那么 ...
- HDU--洗衣服
洗衣服 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- Daily Scrum02 12.16
鉴于近期数据库大作业提交到了关键时期,大家的时间都十分的紧张,因而,我们决定全团队成员交替作业,不在每日每个成员都分配任务,而只需要每个成员保证每两天一次的工作量,以此方式给大家腾出去完成自己的事情. ...
- C语言的傻瓜式随笔(二):全局变量、预编译、goto
函数的作用:可以实现代码的重用. 函数只需要定义1次,那么函数中的代码就可以随意的调用. -某不知出处的基本概念 学而时习之,如有误笔,请指正 一.goto跳转语句 goto在C语言的作用 ...
- js中的变量类型
js 中输出定义变量的类型 typeof 变量名. var u: --underfined类型 var s = "你是一个好人": --string类型 var n = ...
- 基于Picture Library创建的图片文档库中的上传多个文件功能(upload multiple files)报错怎么解决?
复现过程 首先,我创建了一个基于Picture Library的图片文档库,名字是 Pic Lib 创建完毕后,我点击它的Upload 下拉菜单,点击Upload Picture按钮 在弹出的对话框中 ...