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

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. BZOJ3438 小M的作物(最小割)

    题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=3438 Description 小M在MC里开辟了两块巨大的耕地A和B(你可以认为 ...

  2. 帝国CMS如何自动生成sitemap.xml网站地图文件

    登录网站的后台http://你的域名/e/admin/ 进入后台栏目 =>增加自定义页面 =>选择直接页面,页面名称为:网站地图,文件名修改为  ../../sitemap.xml 内容填 ...

  3. github for windows 安装 使用

    遇到无数的未知问题.光是安装就搞了好久. 安装程序显示安装了.NET Framework4.5,然后提示重启.重启后,自动开始下载文件,最多到2%就走不动了. 后来请求了下面这个链接,才开始下载了(虽 ...

  4. debian下使用Sphinx异常“Could not import extension sphinx.builders.linkcheck (exception: cannot import name SSLError)”的解决

    最近使用到Sphinx编译文档,出现如下异常: Extension error:Could not import extension sphinx.builders.linkcheck (except ...

  5. mac安装虚拟机

    1. 安装VirtualBox 2. 新建,按照步骤一步步选择 3.安装系统镜像 xp_sp3_74070.iso CN_WIN7_SP1_X64_33in1_V1.2.iso 设置磁盘分区等 4.V ...

  6. 【转】通过Hibernate将数据 存入oracle数据库例子

    一. Hibernate介绍 Hibernate是基于对象/关系映射(ORM,Object/Relational Mapping)的一个解决方案.ORM方案的思想是将对象模型表示的对象映射到关系型数据 ...

  7. 响应式web网站设计制作方法

    在研究响应式的时候,记录了一些感想,分享出来,抛砖引玉,希望可以和大家一起讨论.总结下来,响应式比之前想象的要复杂得多.1. ie9以下(不包括ie9)采用ie条件注释,为ie8以及一下单独开一个样式 ...

  8. mySql常用函数说明

    #mySql的数学函数select ABS(-5); #绝对值select ceiling(-5.8); #取大整数select floor(-5.8); #取小整数select LEAST(10,3 ...

  9. linux开启FTP以及添加用户配置权限,只允许访问自身目录,不能跳转根目录

    1.切换到root用户 2.查看是否安装vsftp,我这个是已经安装的. [root@localhost vsftpd]# rpm -qa |grep vsftpd vsftpd--.el7_2.x8 ...

  10. Ubuntu系统下lnmp环境搭建和Nginx多站点配置

    最近需要使用Ubuntu作为服务器搭建Lnmp环境,顺便将操作过程写下来,与大家分享.如有不足之处,欢迎大家提出不同意见.(本文默认读者已经熟悉相关linux命令的使用,比如创建文件和文件夹,编辑文件 ...