• 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);
        }
    }
  • 相关阅读:
    vue集成百度UEditor富文本编辑器
    HTTPS访问站点,出现证书问题解决(转载) 规格严格
    JSSE 提供的 动态 debug 追踪模式 规格严格
    javax.net.debug 规格严格
    Oralce null 规格严格
    pipe 规格严格
    (总结)ibatis 动态传入表名和列名 规格严格
    垃圾回收算法简介 规格严格
    转载(正则表达式的分类) 规格严格
    长度为0的数组 规格严格
  • 原文地址:https://www.cnblogs.com/libingql/p/4043254.html
Copyright © 2020-2023  润新知