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[] { 1, 1, 2, 3, 5, 8, 13, 21 };
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(1);
complex.Add("LINQ to ADO.NET");
complex.Add(2);
complex.Add("LINW to XML");
complex.Add(3);

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);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苍狼_2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值