如何从WebMatrix查询中获取列?

时间:2015-07-24 13:06:28

标签: c# webmatrix

标题非常自我解释,看起来它应该是一项简单的任务,但我尝试的一切都没有奏效:

这是我的代码,它工作正常,但表是可变的,所以我需要知道它带回的列:

var data = db.Query("SELECT * FROM " + Table);

以下是我尝试过的技术列表:

data.GetType().GetProperties().ToList(); 
// prints 'Int32 Count' and 'System.Object Item [Int32]'

data.GetDynamicMemberNames()
// Error: '...IEnumerable<dynamic> does not have a definition for GetDynamicMemberNames'
// I also tried using System.Linq and System.Dynamic

I could also iterate through a loop, but there's got to be a more elegant way, right?

我想最终得到一个List<String>列名。

1 个答案:

答案 0 :(得分:1)

List<String> cols = data.First().Columns;

事实证明Columns ProperyIList<string>类型。

但是,它是数据结果的单个行的属性(行是DynamicRecord数据类型),因此很遗憾,结果对象(我的示例中为data)无法访问它。要访问它,您需要获得一行,而.First()似乎是一种非常简单的方法。

这是我的整个代码,万一有人需要它:

WebMatrix.Data.Database db = new WebMatrix.Data.Database();
db.Open("ConnectionString");
var data = db.Query("SELECT * FROM " + Table);
List<String> cols = data.First().Columns;