C# ToLookUp 详解,ToLookUp 和ToDictionary的区别

    ToDictionary 和ToLookUp 对 对象集合的操作带来极大的方便,特别是对索引的提供。方便通过 key 来找到相应的键值,ToDictionary 转换成是键值对 关系是一 一 对应的关系  且key 值是唯一的不能重复。微软仿佛意识到ToDictionary 的不足,于是ToLookUp诞生了, ToLookUp 是ToDictionary 的扩展版本,个人理解: ToLookUp类似于Dictionary<string,List<string>>,好了废话不说直接代码!

  1. private static void LookUpAndDic()
  2. {
  3.     //创建学生列表
  4.     List<Student> data = getStudents();
  5.     //各个班级学生的分组
  6.     ILookup<string, string> dic = data.ToLookup(item => item.classNo,item=> { return item.stuNo + " 姓名" + item.name; });
  7.     foreach(var item in dic)
  8.     {
  9.         Console.WriteLine("年级编号:"+item.Key);
  10.         foreach(var item1 in item)
  11.         {
  12.             Console.WriteLine("\t\t"+item1);
  13.         }
  14.     }
  15.     Console.WriteLine();
  16.  
  17.     //获取指定班级的学生
  18.     IEnumerable<string> datas = dic["01"];
  19.     foreach(string item in datas)
  20.     {
  21.         Console.WriteLine("一班的同学:"+item);
  22.      }
  23.     Console.WriteLine();
  24.     //获取班级个数
  25.     int count = dic.Count;
  26.     Console.WriteLine("获取班级的个数:"+count);
  27.     Console.WriteLine();
  28.     //判断某个班级是否存在
  29.     if (dic.Contains("06"))
  30.     {
  31.         Console.WriteLine("06 班已存在!");
  32.     }
  33.     Console.ReadKey();
  34. }
  35.  
  36. public   class Student
  37. {
  38.     /// <summary>
  39.     /// 学生姓名
  40.     /// </summary>
  41.     public string name { get; set; }
  42.     /// <summary>
  43.     /// 年级代号
  44.     /// </summary>
  45.     public string classNo { get; set; }
  46.     /// <summary>
  47.     /// 学生Id
  48.     /// </summary>
  49.     public string stuNo { get; set; }
  50.     }
  51.  }
  52. /// <summary>
  53. /// 获取所有的students
  54. /// </summary>
  55. /// <returns></returns>
  56. public static List<Student> getStudents()
  57.  {
  58.         return new List<Student>(){
  59.             new Student() { stuNo="0101", classNo="06", name="liu" },
  60.             new Student() { stuNo="0102", classNo="01", name="wang" },
  61.             new Student() { stuNo="0103", classNo="01", name="li" },
  62.             new Student() { stuNo="0104", classNo="02", name="wei" },
  63.             new Student() { stuNo="0105", classNo="02", name="zhao" },
  64.             new Student() { stuNo="0106", classNo="02", name="ma" },
  65.             new Student() { stuNo="0107", classNo="04", name="a" },
  66.             new Student() { stuNo="0108", classNo="03", name="shangGuan" },
  67.             new Student() { stuNo="0109", classNo="03", name="zhang" },
  68.             new Student() { stuNo="0110", classNo="03", name="jiang" },
  69.             new Student() { stuNo="0111", classNo="03", name="wu" },
  70.             new Student() { stuNo="0112", classNo="03", name="test" },
  71.             new Student() { stuNo="0113", classNo="05", name="liu2" },
  72.             };
  73.   }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值