Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查IEnumerable类型集合中的属性_C#_Ienumerable - Fatal编程技术网

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!