检查IEnumerable类型集合中的属性
本文关键字:属性 集合 IEnumerable 类型 检查 | 更新日期: 2023-09-27 18:04:02
我试图找到类型IEnumerable
的集合是否包含属性。
假设RowModels
是IEnumerable
类型的集合,我有…
foreach (var items in RowModels) {
if (items.GetType()
.GetProperties()
.Contains(items.GetType().GetProperty("TRId").Name) )
{
// do something...
}
}
我得到错误
System.Reflection.PropertyInfo[] does not contain a definition for 'Contains'
and the best extension method overload has some invalid arguments.
您可以使用Enumerable.Any()
:
foreach (var items in RowModels) {
if(items.GetType().GetProperties().Any(prop => prop.Name == "TRId") )
{
// do something...
}
}
话虽如此,你也可以直接检查属性:
foreach (var items in RowModels) {
if(items.GetType().GetProperty("TRId") != null)
{
// do something...
}
}
另外-如果你正在寻找RowModels
中实现特定接口或某些特定类的项目,你可以只写:
foreach (var items in RowModels.OfType<YourType>())
{
// do something
}
OfType<T>()
方法将自动筛选到指定类型的类型。这样做的好处是还可以为您提供强类型变量。
将if
更改为:
if(items.GetType().GetProperty("TRId") != null)
//yeah, there is a TRId property
else
//nope!