我正在创建一个网格视图用户控件,我想知道如何从 LinQ 结果集中获取列数和列名。这将用于创建动态网格视图。
我在这里有一个课程:
var myPerson = from persons in myLinQ.SamplePersons
select persons;
在我的网格视图中,它具有接收结果集的这个属性。
public IEnumerable<Object> SourceLinQ { get; set; }
有没有办法做到这一点?
我正在创建一个网格视图用户控件,我想知道如何从 LinQ 结果集中获取列数和列名。这将用于创建动态网格视图。
我在这里有一个课程:
var myPerson = from persons in myLinQ.SamplePersons
select persons;
在我的网格视图中,它具有接收结果集的这个属性。
public IEnumerable<Object> SourceLinQ { get; set; }
有没有办法做到这一点?
像这样的东西怎么样:
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();
这是未经测试的,我什至不知道它是否可以编译(我现在手头没有编译器,抱歉)。