循环通过IQueryable的属性

时间:2013-11-01 21:25:20

标签: c# asp.net-mvc linq

假设我有一个通过LINQ获得的一堆属性的IQueryable,我如何循环这些属性?

我试过了:

foreach (PropertyInfo propertyInfo in rows.GetType().GetProperties())
            {
                var value = propertyInfo.GetValue(this, null);
                var name = propertyInfo.Name;
            }

这似乎没有用,但没有返回任何内容。我需要一种方法来检索IQueryable中所有属性的值的名称。

1 个答案:

答案 0 :(得分:3)

如果rows是查询结果,则您需要使用Type.GetGenericArguments

var type = rows.GetType().GetGenericArguments().First();
foreach (PropertyInfo propertyInfo in type.GetProperties())
{
   //...

这是因为结果将是IQueryable<T>,而不是值本身。提取泛型类型可能会允许您明确获取属性。