C# 如何从WebMatrix查询中获取列?

C# 如何从WebMatrix查询中获取列?,c#,webmatrix,C#,Webmatrix,这个标题相当自我嘲讽,看起来应该是一个简单的任务,但我尝试过的一切都没有奏效: 这是我的代码,工作正常,但表是可变的,因此我需要知道它返回的列: var data = db.Query("SELECT * FROM " + Table); 以下是我尝试过的技术列表: data.GetType().GetProperties().ToList(); // prints 'Int32 Count' and 'System.Object Item [Int32]' data.GetDynamic

这个标题相当自我嘲讽,看起来应该是一个简单的任务,但我尝试过的一切都没有奏效:

这是我的代码,工作正常,但表是可变的,因此我需要知道它返回的列:

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?
data.GetType().GetProperties().ToList();
//打印“Int32计数”和“System.Object项[Int32]”
data.GetDynamicMemberNames()
//错误:“…IEnumerable没有GetDynamicMemberNames的定义”
//我还尝试使用System.Linq和System.Dynamic
我也可以通过循环进行迭代,但必须有一种更优雅的方式,对吗?
我想以列名的
列表结束。

列表cols=data.First().Columns


事实证明,它是一种
IList
类型

但是,它是数据结果的单个行的属性(一行是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;
WebMatrix.Data.Database db=new WebMatrix.Data.Database();
db.开放(“连接字符串”);
var data=db.Query(“从”+表中选择*);
List cols=data.First()列;