如何从WebMatrix查询中获取列

本文关键字:获取 查询 WebMatrix | 更新日期: 2023-09-27 18:04:24

标题是相当不言自明的,它似乎应该是一个简单的任务,但我所尝试的一切都没有工作:

这是我的代码,它工作得很好,但表是可变的,所以我需要知道它返回的列:

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>结束。

如何从WebMatrix查询中获取列

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


结果显示列属性是一个IList<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;