|
助力快速理解 SelectMany 的高级用法 为初学者节省宝贵的时间,避免采坑! |
|
我们的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 |
Chinar 教程效果:

文章目录
1 Intro —— 简介
SelectMany对于初学者来讲,是一个比较难理解的函数。其内部逻辑,有点绕。
在使用上,对初学者来讲,尤其是容易懵逼…
但它的用途极其广泛,且极大的节省代码、提高代码可读性。
避免大量的循环代码
这里我以 4个例子,说明SelectMany的多种用法。
请大家仔细、耐心的看完。
/// <summary>
/// 第一层:老爹
/// </summary>
public class One
{
public string Name; //名字
public int Age; //年龄
public List<Two> TwoList; //儿子
public One(string name, int age, List<Two> twoList)
{
Name = name;
Age = age;
TwoList = twoList;
}
}
/// <summary>
/// 第二层:儿子
/// </summary>
public class Two
{
public string Name; //名字
public int Age; //年龄
public List<Three> ThreeList; //儿子
public Two(string name, int age, List<Three> threeList)
{
Name = name;
Age = age;
ThreeList = threeList;
}
public override string ToString()
{
return $"{nameof(Name)}: {Name}, {nameof(Age)}: {Age}, {nameof(ThreeList)}: {ThreeList}";
}
}
/// <summary>
/// 第三层:孙子
/// </summary>
public class Three
{
public int Age; //年龄
public int Score; //分数
public Three(int age, int score)
{
Age = age;
Score = score;
}
public override string ToString()
{
return $"{nameof(Age)}: {Age}, {nameof(Score)}: {Score}";
}
}
初始化,填入数据
为了便于大家理解,我用了
one、two、three 做为3层嵌套的子父类;
one 对应的数据值为: 爹、年龄
Two 对应:儿子 、 年龄
List<One> ones = new List<One> //第一层列表
{
new One("爹1", 1, new List<Two> //第儿子层
{
new Two("儿子_0", 20, new List<Three> {
new Three(30, 100)}), //第三层
new Two("儿子_1", 21, new List<Three> {
new Three(31, 100)}), //第三层
new Two("儿子_2", 22, new List<Three> {
new Three(32, 100)}) //第三层
}),
new One("爹2", 10, new List<Two>
{
new Two("儿子_0", 23, new List<Three> {
new Three(33, 70)})
}),
new One("爹3", 100, new List<Two>
{
new Two("儿子_0", 24, new List<Three> {
new Three(34, 80)}),
new Two("儿子_1", 25, new List<Three> {
new Three(35, 80)})
}),
new One("爹4", 1000, new List<Two>
{
new Two("儿子_0", 26, new List<Three> {
new Three(36, 50)




被折叠的 条评论
为什么被折叠?



