获取具有父级一个属性的特定类的所有属性

阿里安

请考虑以下代码:

class ClassA
{
    public int ID { get; set; }
    public string Name { get; set; }
    public ClassA PropA { get; set; }
}

class ClassC
{
    public ClassC()
    {
        var MyVar = new List<ClassA>
        {
            new ClassA()
            {
                ID = 1,
                Name = "Name1",
                PropA = new ClassA()
                {
                    ID = 2,
                    Name = "Name2",
                    PropA = new ClassA()
                    {
                        ID = 3,
                        Name = "Name3",
                        PropA = new ClassA()
                        {
                            ID =4,
                            Name = "Name4",
                            PropA = null,
                        }
                    }

                }
            },
            new ClassA()
            {
                ID = 5,
                Name = "Name5",
                PropA = new ClassA()
                {
                    ID = 6,
                    Name = "Name6",
                    PropA = null,
                }
            },
            new ClassA()
            {
                ID = 7,
                Name = "Name7",
                PropA = null,
            },
            new ClassA()
            {
                ID = 8,
                Name = "Name8",
                PropA = new ClassA()
                {
                    ID = 9,
                    Name = "Name9",
                    PropA = new ClassA()
                    {
                        ID = 10,
                        Name = "Name10",
                        PropA = new ClassA()
                        {
                            ID = 11,
                            Name = "Name11",
                            PropA = null,
                        }
                    }
                }
            },
        };
    }
}

我想获取所有ClassA不为null且其父项的name属性的属性。例如:

   Parent        Class A
--------------------------------
1)"Name1"     Class A with ID = 2
2)"Name2"     Class A with ID = 3
3)"Name3"     Class A with ID = 4
4)"Name5"     Class A with ID = 6
and...

谢谢

安德烈·吉斯(Andrzej Gis)

您的意思是这样的吗(C#7):

private static IEnumerable<string> Describe(ClassA a)
{
    var (parent, current) = (a, a.PropA);

    while (!(current is null))
    {
        yield return $"{parent.Name}     Class A with ID = {current.ID}";
        (parent, current) = (current, current.PropA);
    }
}
...
var results = MyVar.SelectMany(Describe);

根据注释中的要求,C#4版本:

private static IEnumerable<string> DescribeCSharp4(ClassA a)
{
    var parent = a;
    var current = a.PropA;

    while (current != null)
    {
        yield return parent.Name + "     Class A with ID = " + current.ID;

        parent = current;
        current = current.PropA;
    }
}
...
var results = MyVar.SelectMany(DescribeCSharp4);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从具有多个属性的类中获取一个特定的属性

如何获取一个类的所有属性

XPath按属性选择具有特定父节点的所有子级

从具有特定类的第一个输入中获取父表单元素

Xpath获取具有与另一个节点匹配的属性的所有节点

如何跨 UITableViewCell 类的所有实例访问模型类的一个特定实例的属性?

获取类的“所有者”,如果它是另一个类的属性

从子元素获取具有特定类的父级

jQuery获取具有特定类的父级

XQuery-具有另一个特定属性值的所有元素的总和属性

访问大对象的属性以映射它们,但前提是它们在同一个父级下并且具有相同的 name 属性并更改 name 属性

如何遍历一个类的所有属性?

如何让所有元素都从基类继承一个特定的属性?

获取另一个类的属性的所有名称-Unity 5 C#

如何在同一个基类的方法中获取所有属性?

如何从网络上刮掉一类具有属性的所有子级?

查找具有特定一级后代的第一个父元素

获取具有特定属性值并在另一个表中具有ID的记录

将具有一个属性的对象转换为父属性

如何使用“where”获取具有XYZ属性的父级的父级

填充一个具有另一个类作为属性的类

Flutter Bloc Equatable状态,在所有状态类中具有一个共同属性

在实践中,是否应该使一个类的所有对象都具有相同数量的属性?

如何使用 querySelectorAll 获取父级的所有子级,仅在 javascript 中排除一个子级

C#获取具有特定属性参数的所有类的列表

选择器,用于获取具有特定属性和类的所有标签

使用C#中的Selenium获取具有特定类的所有元素的属性值的列表

序言:添加以列出具有特定属性的另一个列表的所有成员

获取具有与查询匹配的属性值的另一个对象内的对象的所有键