c# 中Linq Lambda 的ToLookup方法的使用

同样直接上代码:

            List<Student> ss = new List<Student>();
            Student ss1 = new Student() { Id = 1, Age = 1, Name = "11" };
            Student ss2 = new Student() { Id = 1, Age = 1, Name = "11" };
            Student ss3 = new Student() { Id = 2, Age = 2, Name = "22" };
            Student ss4 = new Student() { Id = 2, Age = 2, Name = "22" };
            Student ss5 = new Student() { Id = 2, Age = 2, Name = "22" };
            Student ss6 = new Student() { Id = 3, Age = 3, Name = "33" };
            ss.Add(ss1);
            ss.Add(ss2);
            ss.Add(ss3);
            ss.Add(ss4);
            ss.Add(ss5);
            ss.Add(ss6);
            //var aa = ss.GroupBy(m => new { m.Id, m.Age }).Select(group => new {group.Key.Id,group.Key.Age,count = group.Count()}).ToList();
            //foreach (var item in aa)
            //{
            //    Console.WriteLine(item.Id + "||" + item.Age + "||" + item.count);
            //}

            var dic = ss.ToLookup(m => m.Id);
            foreach (var item in dic)
            {
                Console.WriteLine("学生ID号:" + item.Key);

                foreach (var item1 in item)
                {
                    Console.WriteLine("\t\t" + item1 + " || " + item1.Age + " || " + item1.Name);
                }
            }

执行结果:

学生ID号:1
                Test.Student || 1 || 11
                Test.Student || 1 || 11
学生ID号:2
                Test.Student || 2 || 22
                Test.Student || 2 || 22
                Test.Student || 2 || 22
学生ID号:3
                Test.Student || 3 || 33

 

其中item1是student实例。

此方法的作用和ToDictionary类似,但避免Dictionary类型key子段不能重复的问题。

同时也可用于按某字段Group By排序的场景,且相对后者的优势是带有索引便于操作(其实Group By的数据后面添加ToList()后也很方便,当然这是后话了)。

 

转载于:https://www.cnblogs.com/lbhqq/p/8478118.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值