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

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. screen

    https://www.ibm.com/developerworks/cn/linux/l-cn-screen/ http://www.cnblogs.com/mchina/archive/2013/ ...

  2. Ancient Printer[HDU3460]

    Ancient Printer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Tot ...

  3. 简述JavaScript对象、数组对象与类数组对象

    问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...

  4. nodejs的实现原理和搭建服务器(动态)

    心得体会    今天是我学习的Node.js的第二天,所谓的node.js其实它是javascript编写的服务器的语言,同时它又是属于后台的框架,是一个开放性的平台. 一.相关理论知识: 我们可以用 ...

  5. Android屏幕适配笔记

    1.限定符 为了适配不同屏幕大小的android手机或android平板,有时候就需要利用限定符来为不同的屏幕设定不同的布局文件,在一般情况下我们都是在layout文件夹下为某个活动准备一个默认的布局 ...

  6. centos6字符

    [root@back_zabbix_100 ~]# echo $LANGen_US.UTF-8[root@back_zabbix_100 ~]# cat /etc/sysconfig/i18n LAN ...

  7. Spring4 实例

    结构目录如下: 其中: dao层和entity层都属于hibernate的的管辖.entity层里面装的是每张表对应的持久化类.dao层里面装的是"底层操作数据库的行为",仅仅只是 ...

  8. Linux下如何自己编译源代码(制作成可以安装的.deb文件)

    以tree实用程序(以树型结构获取目录树)为例,介绍Ubuntu中如何管理源码包,包括查询,获取,编译源码包,直至安装.   1) 在获取源码包之前,确保在软件源配置文件/etc/apt/source ...

  9. Visual Studio 2013 Ultimate的可视化代码功能

    可视化和了解代码综合了如何使用visual studio可视化代码来帮助理解代码: 理解代码和代码之间的关系:(1)Code Map(2)Dependency Graphs 理解代码交互:Sequen ...

  10. 【腾讯Bugly干货分享】Android ImageView 正确使用姿势

    本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5832602d7196970d65901d76 导语 本文主要介绍了ImageV ...