C# 检查IEnumerable类型集合中的属性
我正在尝试查找类型为C# 检查IEnumerable类型集合中的属性,c#,ienumerable,C#,Ienumerable,我正在尝试查找类型为IEnumerable的集合是否包含属性 假设RowModels是类型IEnumerable的集合,我有 foreach (var items in RowModels) { if (items.GetType() .GetProperties() .Contains(items.GetType().GetProperty("TRId").Name) ) {
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.
您可以使用
可枚举的.Any()
:
也就是说,您也可以直接检查该物业:
foreach (var items in RowModels) {
if(items.GetType().GetProperty("TRId") != null)
{
// do something...
}
}
另外-如果您在行模型中查找实现特定接口或属于某个特定类的项,您可以编写:
foreach (var items in RowModels.OfType<YourType>())
{
// do something
}
foreach(RowModels.OfType()中的变量项)
{
//做点什么
}
OfType()的方法将自动筛选到指定类型的类型。这样做的好处是还可以提供强类型变量。将if
更改为:
if(items.GetType().GetProperty("TRId") != null)
//yeah, there is a TRId property
else
//nope!
好的,它有用吗?如果是,为什么要问这个问题?如果没有,会发生什么,您会得到错误吗?您的输出不是预期的吗?如果是,请解释预期和实际输出是什么。看起来您更快了=)
if(items.GetType().GetProperty("TRId") != null)
//yeah, there is a TRId property
else
//nope!