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