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
            Console.WriteLine();

            #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

时间: 2024-11-07 02:09:08

C# 使用Dictionary、linq实现根据集合里面的字符串进行分组的相关文章

DataTable的筛选,过滤后绑定数据源的两种方法(DataTable的select和使用linq返回List集合)

一般数据处理使用DataTable的情况会很多,而我们很多时候会对得到的DataTable的数据进行筛选后绑定到Combobox.GridView.Repeat等控件中,现在分享一下两种DataTable在C#程序中的筛选处理方式. 我们先手动创建一个DataTable  DataTable dt=new DataTable(); DataColumn dtc = new DataColumn("id",typeof(string));            dt.Columns.Ad

如何使用linq读取DataTable集合?AsQueryable() 和 AsEnumerable()区别?

一.准备工作 引入linq和data 相关的using命名空间 DataTable dt=new DataTable();//dt的来源可以是多个地方,比如:数据库,Excel等等.我这里使用Excel. 二.获取DataTable的列名及数据类型的方法 有了这个方法就不必考虑来源中的列名和数据类型,这里就可以查找到. foreach (DataColumn dc in dt.Columns)//获取DataTable中的列名,这里的dt由于是从Excel导入所有列名为:F1,F2,F3,F4.

Linq 查询 List集合

总是听到身边的同事说起Linq ,知道上学的时候学过,可是自从毕业之后就再也没用过,总觉得是很牛的技能 ,可是当自己真正学会用的时候才发现,我去,So easy .废话不多说直接上代码吧 var list1 = (from f in listFund where f.UserId == Id && (f.ChangeType == 1 || f.ChangeType == 40) && (f.ReasonType == 40 || f.ReasonType == 1) se

C#入门Dictionary&lt;k,v&gt;泛型集合

关于Dictionary<k,v>泛型集合 Dictionary<k,v>通常成为字典,<k,v>约束集合中元素类型: 编译时检查类型约束,无需装箱拆箱操作,与哈希表操作类似: 1 static void Main(string[] args) 2 { 3 //创建几个学员对象 4 Student objStudent1 = new Student(1001, "小明"); 5 Student objStudent2 = new Student(10

LINQ:To Objects - 如何操作字符串

LINQ 如何操作字符串 前言: 上次发布的 <LINQ:进阶 - LINQ 标准查询操作概述>(90+赞) 社会反响不错,但自己却始终觉得缺点什么!“纸上得来终觉浅,绝知此事要躬行”,没错,就是实战!这次让我们一起来看看一些操作字符串的技巧,也许能引我们从不同的角度思考问题,从而走出思维的死角! LINQ 可用于查询和转换字符串和字符串集合.它对文本文件中的半结构化数据尤其有用.LINQ 查询可与传统的字符串函数和正则表达式结合使用. 例如,可以使用 Split 或 Split 方法来创建字

C# LinQ 通过字段名对应的字符串取得和设置字段值!

typ.GetType().GetProperty("BPlate").GetValue(typ, null).ToString(); spa1.GetType().GetProperty(KeyString).SetValue(spa1, val, null); 返回结果是:SA-240 304 C# LinQ 通过字段名对应的字符串取得和设置字段值!,布布扣,bubuko.com

c# Linq及Lamda表达式应用经验之 GroupBy 分组

本文转载自:http://www.cnblogs.com/han1982/p/4138163.html 示例1: GroupBy 分组在List<>泛型中的应用 原表: 按姓名Name 分组后结果: 对DATATABLE 进行LAMDA查询时必须在项目的引用中添加 System.Data.DataSetExtensions 代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } List

(转)c# Linq及Lamda表达式应用经验之 GroupBy 分组

本文转载自:http://www.cnblogs.com/han1982/p/4138163.html 示例1: GroupBy 分组在List<>泛型中的应用 原表: 按姓名Nam 分组后结果: 对DATATABLE 进行LAMDA查询时必须在项目的引用中添加 System.Data.DataSetExtensions 代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } List&

c# Linq及Lambda表达式应用经验之 GroupBy 分组 count ,排序

引用:http://www.cnblogs.com/han1982/p/4138163.html 示例1: GroupBy 分组在List<>泛型中的应用 原表: 按姓名Nam 分组后结果: 对DATATABLE 进行LAMDA查询时必须在项目的引用中添加 System.Data.DataSetExtensions public partial class Form1 : Form { public Form1() { InitializeComponent(); } List<Pers