zoukankan      html  css  js  c++  java
  • LINQ之LookUp

    [C#] LINQ之LookUp - cnxy - 博客园 (cnblogs.com)

    Lookup<TKey,TElement>类似于 Dictionary<TKey,TValue> 。 不同之处在于,将 Dictionary<TKey,TValue> 键映射到单个值,而将键 Lookup<TKey,TElement> 映射到值的集合。

    Enumerable.ToLookup 方法 (System.Linq) | Microsoft Docs

    代码:

    void Main()
    {
        List<Person> personList = new List<Person>
            {
                new Person
                {
                    Name = "P1", Age = 18, Gender = "Male"
    
                },
                new Person
                {
                    Name = "P2", Age = 19, Gender = "Male",
                },
                new Person
                {
                    Name = "P2", Age = 17,Gender = "Female",
                }
            };
    
        //ToLookUp与GroupBy的功能基本一样,但ToLookUp没有GroupBy那样得延迟执行机制,它是立即执行的,且重载只有4个,而GroupBy却有8个之多。
    
        Console.WriteLine("********ToLookUp第一种用法*************************************");
        //public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);
        //官方释义:根据指定的键选择器函数,从IEnumerable<TSource> 创建一个 ILookup < TKey, TSource >。
    
        var lookups = personList.ToLookup(p => p.Gender);
        foreach (var lookup in lookups)
        {
            Console.Write($"{lookup.Key}:	");
            foreach (var person in lookup)
            {
                Console.Write($"{person.Name},{person.Age}	");
            }
            Console.WriteLine();
        }
    
        Console.WriteLine("********Join第二种用法*************************************");
        //    由于ToLookUp与GroupBy相似,因此,第二、三、四种用法请参考请参考[C#] LINQ之GroupBy 。
        //
        //public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer);
        //    官方释义:根据指定的键选择器函数和键比较器,从IEnumerable<TSource> 创建一个ILookup<TKey, TElement>。
        //
        //public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector);
        //    官方释义:根据指定的键选择器和元素选择器函数,从IEnumerable<TSource> 创建一个ILookup<TKey, TElement>。
        //
        //public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer);
        //    官方释义:根据指定的键选择器函数、比较器和元素选择器函数,从IEnumerable<TSource> 创建一个ILookup<TKey, TElement>。
    }
    class Person
    {
        public string Name { set; get; }
        public int Age { set; get; }
        public string Gender { set; get; }
        public override string ToString() => Name;
    }

    结果:

    ********ToLookUp第一种用法*************************************
    Male:  P1,18  P2,19  
    Female:  P2,17  
    ********Join第二种用法*************************************
  • 相关阅读:
    持续集成(转)
    Java中前台JSP请求Servlet实例(http+Servlet)
    Java中Map集合的四种访问方式(转)
    Python中字符串操作
    Python中的range函数用法
    Python学习资料下载地址(转)
    Linux性能工具介绍
    性能问题定位方法
    录制脚本前需要理解的几个基本概念
    Python 硬件底层基础理论
  • 原文地址:https://www.cnblogs.com/springsnow/p/14994704.html
Copyright © 2011-2022 走看看