从对象列表中检查类成员是否为空

时间:2012-08-22 18:09:51

标签: c# .net linq object lambda

有没有办法检查特定的类成员是否为空?

我有一个包含N个属性(成员)的类。我必须为类创建许多对象,并可以为这些属性分配值。我使用List来存储所有对象。

现在,我想检查列表中特定索引中的对象是否具有null或未设置的任何属性?这可以在不使用循环或手动检查每个属性的情况下完成吗?

提前致谢..

4 个答案:

答案 0 :(得分:3)

假设您有AlistA类型的项目列表。下面是一个LINQ表达式,它将查找列表中所有属性设置为null的项目:

var output = listA.Where(a => typeof (A).GetProperties()
                                        .Any(p => p.GetValue(a) == null))
            .Select((a, index) => index)
            .ToList();

答案 1 :(得分:0)

以下是检查索引中的项目是否具有null属性的方法:

var item = myItems[indexToCheck];
bool hasNullProperty = typeof(MyClass)
    .GetProperties()
    .Any(p => p.GetValue(item) == null);

答案 2 :(得分:-1)

它可以使用一些工作,但这里是你可以使用的一般功能。我会说实话,我不确定这是否违反了你的限制,你不使用循环/单独检查每个成员(看看它是如何做到的)。

public static bool AreAnyPropertiesNull(object obj)
{
    foreach (var prop in obj.GetType().GetProperties())
    {
        object propertyValue = prop.GetValue(obj, null);
        if (propertyValue == null)
            return true;
    }
    return false;
}

答案 3 :(得分:-2)

listOfObjects [I] .HaveAnyOfPropertiesNullOrNotSet()

我在这里看不到循环。