C# 使用Dictionary、linq实现根据集合里面的字符串进行分组
2014-11-28 22:39
661 查看
//对下面集合里面的字符串按照“_”进行分组。 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
相关文章推荐
- 在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,我们可以通过以下两种方法来实现。 【方法一】:使用 try{} catch{} 语句。 我们可以在try语句块中试图
- C# 中使用Linq 对Dictionary进行排序
- c# 使用linq查询子句方式实现 字符串数组统计操作
- [C#]使用Join与GroupJoin将两个集合进行关联与分组
- linq实现两表关联查询,使用group by进行分组
- C#中使用Join与GroupJoin将两个集合进行关联与分组
- C# 中使用Linq 对Dictionary进行排序
- 将不确定变为确定~Linq的Group是否可以根据多个字段进行分组
- 字符串根据自定义长度进行分组
- C#中使用指针实现高效比较字符串的小技巧
- 光脚丫学LINQ(007):使用LINQ进行数据转换(C#)
- linq 扩展,在查询中使用字符串表达式对结果进行排序
- 字符串公式解析器——使用“逆波兰式算法”及C#实现
- 光脚丫学LINQ(007):使用LINQ进行数据转换(C#)
- c#根据公式进行自动计算的实现
- 关于一道面试题,使用C#实现字符串反转算法
- C#中使用指针实现高效比较字符串的小技巧
- 使用C#实现字符串反转算法的参考答案
- 利用C#动态编译功能实现像Javascript中的Eval的功能来将一段字符串进行数学运算
- C#在类中使用Server.MapPath()及在winform中对字符串进行编码