1

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

我在这里有一个课程:

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

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

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

有没有办法做到这一点?

4

1 回答 1

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();

这是未经测试的,我什至不知道它是否可以编译(我现在手头没有编译器,抱歉)。

于 2011-07-25T02:54:25.020 回答