如何使用linq或其他方法派生count>0的任何内部类

k3fezbri  于 2022-12-25  发布在  其他
关注(0)|答案(1)|浏览(111)

如何使用linq或其他方法导出count〉0的类的内部列表
父类
父类包含10个内部类-子类1、子类2、子类3、......子类10

public class ParentClass
{
    public List<ChildClass1> ChildClass1 { get; set; }
    public List<ChildClass2> ChildClass2 { get; set; }
    .
    .
    public List<ChildClass10> ChildClass10 { get; set; }
}

我有ParentClassObj,我如何从它派生任何count〉0的内部类。
我有一个解决方案,但它是不可行的检查所有10个类的内部列表,如下所示

if(!(ParentClassObj.ChildClass1.Any() && ParentClassObj.ChildClass2.Any() ...)
{
  // return not found
}

有没有用Linq或其他方法来导出的优化解决方案。谢谢

2izufjch

2izufjch1#

反射方式。请查看IsAllChildCountsMoreThanZero方法并更改为您想要的方式。

public class ParentClass
        {
            public List<ChildClass1> ChildClass1 { get; set; }
            public List<ChildClass2> ChildClass2 { get; set; }
            public List<ChildClass10> ChildClass10 { get; set; }

            public bool IsAllChildCountsMoreThanZero()
            {
                foreach (var prop in typeof(ParentClass).GetProperties())
                {
                    var propType = prop.PropertyType;

                    if (propType.IsGenericType && (propType.GetGenericTypeDefinition() == typeof(List<>)))
                    {
                        var propertyValue = prop.GetValue(this, null);
                        if (propertyValue == null) return false;
                        var listPropertyValue = (IList)propertyValue;
                        if (listPropertyValue.Count == 0)
                        {
                            return false;
                        }
                    }
                }
                return true;
            }
        }

相关问题