ToDictionary 和ToLookUp 对 对象集合的操作带来极大的方便,特别是对索引的提供。方便通过 key 来找到相应的键值,ToDictionary 转换成是键值对 关系是一 一 对应的关系 且key 值是唯一的不能重复。微软仿佛意识到ToDictionary 的不足,于是ToLookUp诞生了, ToLookUp 是ToDictionary 的扩展版本,个人理解: ToLookUp类似于Dictionary<string,List<string>>,好了废话不说直接代码!
- private static void LookUpAndDic()
- {
- //创建学生列表
- List<Student> data = getStudents();
- //各个班级学生的分组
- ILookup<string, string> dic = data.ToLookup(item => item.classNo,item=> { return item.stuNo + " 姓名" + item.name; });
- foreach(var item in dic)
- {
- Console.WriteLine("年级编号:"+item.Key);
- foreach(var item1 in item)
- {
- Console.WriteLine("\t\t"+item1);
- }
- }
- Console.WriteLine();
- //获取指定班级的学生
- IEnumerable<string> datas = dic["01"];
- foreach(string item in datas)
- {
- Console.WriteLine("一班的同学:"+item);
- }
- Console.WriteLine();
- //获取班级个数
- int count = dic.Count;
- Console.WriteLine("获取班级的个数:"+count);
- Console.WriteLine();
- //判断某个班级是否存在
- if (dic.Contains("06"))
- {
- Console.WriteLine("06 班已存在!");
- }
- Console.ReadKey();
- }
- public class Student
- {
- /// <summary>
- /// 学生姓名
- /// </summary>
- public string name { get; set; }
- /// <summary>
- /// 年级代号
- /// </summary>
- public string classNo { get; set; }
- /// <summary>
- /// 学生Id
- /// </summary>
- public string stuNo { get; set; }
- }
- }
- /// <summary>
- /// 获取所有的students
- /// </summary>
- /// <returns></returns>
- public static List<Student> getStudents()
- {
- return new List<Student>(){
- new Student() { stuNo="0101", classNo="06", name="liu" },
- new Student() { stuNo="0102", classNo="01", name="wang" },
- new Student() { stuNo="0103", classNo="01", name="li" },
- new Student() { stuNo="0104", classNo="02", name="wei" },
- new Student() { stuNo="0105", classNo="02", name="zhao" },
- new Student() { stuNo="0106", classNo="02", name="ma" },
- new Student() { stuNo="0107", classNo="04", name="a" },
- new Student() { stuNo="0108", classNo="03", name="shangGuan" },
- new Student() { stuNo="0109", classNo="03", name="zhang" },
- new Student() { stuNo="0110", classNo="03", name="jiang" },
- new Student() { stuNo="0111", classNo="03", name="wu" },
- new Student() { stuNo="0112", classNo="03", name="test" },
- new Student() { stuNo="0113", classNo="05", name="liu2" },
- };
- }