.Net/C# --- Linq方法 --- SelectMany

1、本篇我来记录一下我学习的SelectMany的几种重载方法

2、在Linq中,SelectMany这个方法理解起来其实还是稍微有点绕的

3、我是通过观看视频学习和看别人发的笔记学习到的,接下来分享给大家

一、首先我们先建立两个实体,大家可以通过数据库传值。

我这里用的是控制器项目,比较简便给大家演示

第一个实体,新建一个类:

public class Person
    {
        //姓名
        public string Name { get; set; }
        //性别
        public string Gender { get; set; }
        //年龄
        public int Age { get; set; }
        //课程表
        public List<ClassScheduleCard> Phones { get; set; }
    }

 第二个实体,新建一个类:

public class ClassScheduleCard
    {
        //课程
        public string Curriculum { get; set; }
        //老师
        public string Teacher { get; set; }
        //学校
        public string School { get; set; }

    }

二、新建好我们的实体后我们就要开始进行调用

如果你是用的数据库字段,那么就不用生成死的集合。这里我没有新建数据库,所以我就调用的我新生成的集合如下

#region 创建集合
            List<Person> PersonLists = new List<Person>()
            {
                new Person { Name = "唱跳Rap",Age = 20,Gender = "男",
                    Phones = new List<ClassScheduleCard> {
                        new ClassScheduleCard { School = "安阳第五小学", Teacher = "小白", Curriculum = "英语" },
                        new ClassScheduleCard { School = "安阳第五小学",Teacher = "小黑",Curriculum = "英语"},
                        new ClassScheduleCard { School = "安阳第五小学",Teacher = "小白",Curriculum = "语文"},
                        new ClassScheduleCard { School = "安阳第五小学",Teacher = "小黄",Curriculum = "数学"},
                        }
                },
                new Person { Name = "及你太美",Age = 30,Gender = "男",
                    Phones = new List<ClassScheduleCard> {
                        new ClassScheduleCard { School = "郑州第一中学",Teacher = "小黄",Curriculum = "政治"},
                        new ClassScheduleCard { School = "郑州第二中学",Teacher = "大黄",Curriculum = "语文"},
                        new ClassScheduleCard { School = "郑州第三中学",Teacher = "小黑",Curriculum = "科学"},
                    }
                },
                new Person { Name = "小黑子",Age = 40,Gender = "男",
                    Phones = new List<ClassScheduleCard> {
                        new ClassScheduleCard { School = "苏州大学",Teacher = "小紫",Curriculum = "计算机"},
                        new ClassScheduleCard { School = "郑州大学",Teacher = "小绿",Curriculum = "毛概"},
                        new ClassScheduleCard { School = "河南大学",Teacher = "小der",Curriculum = "C语言"}
                    }
                }
            };
            #endregion

有了数据之后,我们就可以进行数据的查询调用接下来就开始实现SelectMany的方法重载

第一种重载方式:

Console.WriteLine("****************************************************************");
            Console.WriteLine("SelectMany第一种重载查询结果");
            var lists_1 = PersonLists.SelectMany(p => p.Phones);
            foreach (var list in lists_1)
            {                
                Console.WriteLine($"{list.School} -- {list.Teacher} -- {list.Curriculum}");
            }

运行结果是这样的:

 第二种重载方式:

//第二种重载方式
            Console.WriteLine("****************************************************************");
            Console.WriteLine("SelectMany第二种重载查询结果");
            var lists_2 = PersonLists.SelectMany((p, i) =>
            {
                p.Phones.ForEach(q => q.School += i.ToString());
                return p.Phones;
            });
            foreach (var list in lists_2)
            {
                Console.WriteLine($"{list.School} -- {list.Teacher} -- {list.Curriculum}");
            }

第二种重载结果是这样的:

 第三种重载方式:

Console.WriteLine("****************************************************************");
            Console.WriteLine("SelectMany第三种重载查询结果");
            var lists_3 = PersonLists.SelectMany(p => p.Phones, (p, q) => new { PersonCurriculum = p.Name, PhoneCurriculum = q.Curriculum });
            foreach (var list in lists_3)
            {
                Console.WriteLine($"{list.PersonCurriculum} -- {list.PhoneCurriculum}");
            }

第三种重载结果是这样的:

第四种重载方式:

Console.WriteLine("****************************************************************");
            Console.WriteLine("SelectMany第四种重载查询结果");
            var lists_4 = PersonLists.SelectMany((p, i) =>
            {
                p.Phones.ForEach(q => q.Curriculum += i.ToString());
                return p.Phones;
            },
            (q,p) => new {PersonCurriculum = p.Curriculum,PhoneCurriculum =q.Name});
            foreach (var list in lists_4)
            {
                Console.WriteLine($"{list.PersonCurriculum} -- {list.PhoneCurriculum}");
            }

第四种重载结果是这样的:

通过以上几种方法可以看出,其实用法都是差不多的,有的只是多了一点数据和统计。SelectManhy的用法远远不止这么简单,还有很多复杂的用法,大家可以多琢磨琢磨,有更深入的了解,记得给我也分享分享🤭🤭🤭🤭

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值