如何从ExecuteQuery的动态结果中获取列名

时间:2014-01-26 12:11:03

标签: c# linq-to-sql

有没有办法从ExecuteQuery的动态结果中获取列名,在linq-to-sql中,以下是我尝试过的代码片段,但它给出了

  

{System.Reflection.PropertyInfo [0]}作为返回。因为我的SQL查询是   从数据库中提取我不能用预定义的表格映射它

string sql = 'SELECT CustomX, CustomY FROM CustomTable';
var tabledata = (IEnumerable<dynamic>)dbLinq.ExecuteQuery<dynamic>(sql);

BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic |
                        BindingFlags.Static | BindingFlags.Instance |
                        BindingFlags.DeclaredOnly;

PropertyInfo[] columns = tabledata.First().GetType().GetProperties(flags);

任何帮助或替代建议将不胜感激... (我正在使用.net framework 4.0,SQL Server 2008)

修改: 如果此选项不适用于动态结果,任何人都可以指导我循环通过第一条记录并获取列名...提前致谢

2 个答案:

答案 0 :(得分:0)

您应该在Name对象上使用PropertyInfo属性来获取此属性。

for(int i = 0 ; i < columns.Length; i++)
{
    Console.WriteLine(columns[i].Name); // <-- will output in a name of a certain property
}

答案 1 :(得分:0)

使用:

for(int i = 0 ; i < columns.Count; i++)
{
    Console.WriteLine(columns[i].Name); 
}