试图弄清楚如何从SQL语句中获取列名。在网上看到一些说有用的东西,但肯定没有:
var rows=db.Query("select * from users");
<ul>
@foreach(var col in rows)
{
<li>@col.name</li>
}
</ul>
仅当存在名称为name
的列时才会显示该值,但如果可能,我会喜欢实际的列名。
任何人都知道如何使用WebMatrix.Data获取所有列名称?
编辑:
看起来DynamicRecord
类暴露了列名,只是想知道它是如何应用的。
http://msdn.microsoft.com/en-us/library/webmatrix.data.dynamicrecord(v=vs.111).aspx
答案 0 :(得分:2)
您可以使用GetDynamicMemberNames方法获取“列”(已转换为动态属性)
var rows = db.Query("select * from users");
<ul>
@foreach(var item in rows.First().GetDynamicMemberNames())
{
<li>row[item]</li>
}
</ul>
答案 1 :(得分:1)
好的,让我为你解释一下。
我创建了一个新项目,并在Visual Studio中对其进行了测试,但它确实有效。您需要了解有关DynamicRecord和Columns属性的基础知识。
这是我使用过的代码,
@{
var db = Database.Open("StarterSite");
var selectQuery = "SELECT * FROM UserProfile";
var result = db.Query(selectQuery);
}
在HTML中我做了这个,
<div>
@foreach (var row in result)
{
<p>@row.Columns[0]</p>
}
</div>
执行时,由于DynamicRecord.Columns
属性是IList<string>
泛型类型,因此您应该了解可以通过简单的索引来读取其属性。就像我所做的那样,它将读取发送给用户的字符串列表中的第一列。
现在执行时,由于第一列是电子邮件,它在屏幕上给了我以下输出。
您也可以从列表中获取其他人。只需更新索引号即可。 : - )
http://msdn.microsoft.com/en-us/library/webmatrix.data.dynamicrecord.columns(v=vs.111).aspx