我有一个课程如下:
public class Entity
{
public string Name {get;set;}
public int ID {get;set;}
public string Desc {get;set;}
}
我有List
Entity
:
List<Entity> ent = new List<Entity>()
{
new Entity {Name ="A", ID =1},
new Entity {Name ="B", ID = 2}
};
在列表中,我们可以观察&#34; Desc &#34;每个对象的值为空。有没有办法找到属性Name,其值对于List中的所有对象都是空的。
在此示例中,输出为&#34; Desc &#34;不使用for循环,循环对象并保持标志?
答案 0 :(得分:2)
您可以使用Type.GetProperties方法迭代该类型的属性,然后使用LINQ All方法和PropertyInfo.GetValue方法检查列表中所有项目中的属性值是否为null :
list<Entity> entities = ...;
foreach(PropertyInfo propertyInfo in typeof(Entity).GetProperties())
{
if(entities.All(entity => propertyInfo.GetValue(entity) == null))
{
Console.WriteLine("{0} property is null in all of the items in the list", propertyInfo.Name);
}
}
答案 1 :(得分:2)
使用LINQ:
var Properties = typeof(Entity).GetProperties()
.Where(propertyInfo => ent.All(entity => propertyInfo.GetValue(entity, null) == null))
.Select(c=>c.Name);
Properties
是IEnumerable
String
IEnumerable
Properties
Name
的{{1}}他们的价值观每个对象都为null。