转换是指将输入对象的类型转变为序列的动作。

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转换操作符的更多相关文章

  1. LINQ系列目录

    1. LINQ准备 1.1 C#中与LINQ相关特性 2. LINQ to Object 2.1 LINQ to Object投影操作符(Select/SelectMany/Let) 2.2 LINQ ...

  2. C# ~ 从 XML 到 Linq 到 Linq to XML

    .XML 可扩展标记语言 (Extensible Markup Language), 标记 (markup) 是关键部分,是标准通用标记语言 (Standard Generalized Markup ...

  3. LINQ系列:Linq to Object集合操作符

    集合操作符对元素的集合或序列集合进行操作,并返回一个集合.LINQ共有4种集合查询操作符:Distinct.Union.Intersect和Except. 1. Distinct Distinct操作 ...

  4. linq操作符:转换操作符

    这些转换操作符将集合转换成数组:IEnumerable.IList.IDictionary等.转换操作符是用来实现将输入对象的类型转变为序列的功能.名称以"As"开头的转换方法可更 ...

  5. LinQ系列文章

    温故而知新,想着系统再学习一次LinQ知识点,发现园子里有个非常棒的系列文章,所以Mark下来,方便以后查阅! 系列博客导航: LINQ之路系列博客导航 LINQ之路 1:LINQ介绍 LINQ之路 ...

  6. C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换

    LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...

  7. RxJava系列3(转换操作符)

    RxJava系列1(简介) RxJava系列2(基本概念及使用介绍) RxJava系列3(转换操作符) RxJava系列4(过滤操作符) RxJava系列5(组合操作符) RxJava系列6(从微观角 ...

  8. LINQ 系列

    C#图解教程 第十九章 LINQ   LINQ 什么是LINQLINQ提供程序 匿名类型 方法语法和查询语法查询变量查询表达式的结构 from子句join子句什么是联结查询主体中的from…let…w ...

  9. Linq系列

    LINQ 图解 Linq中的Select——投影 Linq学习资源 Expert C# 5.0中的Linq部分

随机推荐

  1. HTML5 学习笔记(三)——本地存储

    目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...

  2. topcoder SRM 628 DIV2 BishopMove

    题目比较简单. 注意看测试用例2,给的提示 Please note that this is the largest possible return value: whenever there is ...

  3. 深入理解Spark(一):Spark核心概念RDD

    RDD全称叫做弹性分布式数据集(Resilient Distributed Datasets),它是一种分布式的内存抽象,表示一个只读的记录分区的集合,它只能通过其他RDD转换而创建,为此,RDD支持 ...

  4. day 2 Linux基础

    6.用户.群组和权限 1) 新建用户natasha,uid为1000,gid为555,备注信息为"master" useradd natasha usermod -u1000 na ...

  5. Smart3D系列教程4之 《案例实战演练1——小物件的照片三维重建》

    一.前言 Wish3D出品的Smart3D系列教程已经推出3讲了,分别是关于倾斜摄影三维建模原理应用.照片采集技巧.Smart3D各个功能模块的作用,它们都是围绕Smart3D建模软件进行的讲解.那么 ...

  6. HDU--洗衣服

    洗衣服 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  7. Daily Scrum02 12.16

    鉴于近期数据库大作业提交到了关键时期,大家的时间都十分的紧张,因而,我们决定全团队成员交替作业,不在每日每个成员都分配任务,而只需要每个成员保证每两天一次的工作量,以此方式给大家腾出去完成自己的事情. ...

  8. C语言的傻瓜式随笔(二):全局变量、预编译、goto

    函数的作用:可以实现代码的重用. 函数只需要定义1次,那么函数中的代码就可以随意的调用.       -某不知出处的基本概念 学而时习之,如有误笔,请指正 一.goto跳转语句 goto在C语言的作用 ...

  9. js中的变量类型

    js 中输出定义变量的类型  typeof  变量名. var u:  --underfined类型 var s = "你是一个好人":   --string类型 var n = ...

  10. 基于Picture Library创建的图片文档库中的上传多个文件功能(upload multiple files)报错怎么解决?

    复现过程 首先,我创建了一个基于Picture Library的图片文档库,名字是 Pic Lib 创建完毕后,我点击它的Upload 下拉菜单,点击Upload Picture按钮 在弹出的对话框中 ...