zoukankan      html  css  js  c++  java
  • C# 使用Dictionary、linq实现根据集合里面的字符串进行分组

    //对下面集合里面的字符串按照“_”进行分组。
    List<string> list = new List<string>() { "1_32", "2_10", "1_8", "1_25", "2_3", "3_5", "5_15", "3_16" };

    使用字典:

    #region //使用字典,键值对集合保存分组数据。
                Dictionary<string, List<string>> groupDic = new Dictionary<string, List<string>>();
                foreach (var item in list)
                {
                    //取KEY值
                    string key = item.Split('_')[0];
                    //根据key值判断集合中是否存在指定的键,不存在则创建一个。
                    if (!groupDic.ContainsKey(key))
                    {
                        groupDic.Add(key, new List<string>()); //初始化
                    }
                    groupDic[key].Add(item); //直接把当前元素添加到,key对应的List集合中。
                }
    
                foreach (var item in groupDic)
                {
                    var s = groupDic[item.Key];
                    for (int i = 0; i < s.Count; i++)
                    {
                        Console.WriteLine("KEY:{0} Value:{1}", item.Key, s[i]);
                    }
                } 
                #endregion

    使用linq
    #region //使用linq 分组
                var groupList = from s in list
                                group s by s.Split('_')[0] into g
                                select g;
    
                foreach (var item in groupList)
                {
                    var s = groupDic[item.Key];
                    for (int i = 0; i < s.Count; i++)
                    {
                        Console.WriteLine("KEY:{0} Value:{1}", item.Key, s[i]);
                    }
                } 
                #endregion
    
    

    使用lambda:

    #region //使用lambda 分组
                var groupList2 = list.GroupBy(s => s.Split('_')[0]).Select(g => g);
    
                foreach (var item in groupList2)
                {
                    var s = groupDic[item.Key];
                    for (int i = 0; i < s.Count; i++)
                    {
                        Console.WriteLine("KEY:{0} Value:{1}", item.Key, s[i]);
                    }
                }
                #endregion

  • 相关阅读:
    yml 配置文件注入
    STS 自动生成 getter 和 setter
    maven build 失败
    navicat 使用
    STS 设置 注解提示
    windows下安装Mysql
    安装 mysql
    用Navicat Premium 操作MySQL数据库
    渐变显示渐变消失的BackgroundView
    基于dispatch_after封装YXTimer
  • 原文地址:https://www.cnblogs.com/han1982/p/4129528.html
Copyright © 2011-2022 走看看