如何获取列名WebMatrix.Data

时间:2014-08-22 06:35:03

标签: asp.net asp.net-mvc razor webmatrix

试图弄清楚如何从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

2 个答案:

答案 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>泛型类型,因此您应该了解可以通过简单的索引来读取其属性。就像我所做的那样,它将读取发送给用户的字符串列表中的第一列。

现在执行时,由于第一列是电子邮件,它在屏幕上给了我以下输出。

enter image description here

您也可以从列表中获取其他人。只需更新索引号即可。 : - )

http://msdn.microsoft.com/en-us/library/webmatrix.data.dynamicrecord.columns(v=vs.111).aspx