从LinQ结果集中获取列数和列名

时间:2011-07-25 02:27:29

标签: linq-to-sql ienumerator

我正在创建一个Grid视图用户控件,我想知道如何从LinQ结果集中获取列数和列名。这将用于创建动态网格视图。

我在这里有一个课程:

var myPerson = from persons in myLinQ.SamplePersons
               select persons;

在我的网格视图中,它具有接收结果集的此属性。

public IEnumerable<Object> SourceLinQ { get; set; }

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

这样的事情怎么样:

var resultType =
    query.GetType() 
         .GetInterfaces()
         .Where(x => x.IsGenericType &&
                     x.GetGenericTypeDefinition() == 
                         typeof(IEnumerable<>)
         )
         .Single()
         .GetGenericArguments()
         .Single();

然后:

var columns = resultType.GetProperties();
int numberOfColumns = columns.Length;
string[] columnNames = columns.Select(column => column.Name)
                              .ToArray();

这是未经测试的,我甚至不知道它是否编译(我现在没有编译器,对不起)。