Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取从任何sql语句返回的字段名_C#_Asp.net_Sql - Fatal编程技术网

C# 获取从任何sql语句返回的字段名

C# 获取从任何sql语句返回的字段名,c#,asp.net,sql,C#,Asp.net,Sql,我想获取从sql语句返回的字段名列表。这可以通过使用sql语句或一些c#解析代码将语句解析为字符串来完成。不需要编写复杂的解析器就可以轻松完成这项工作吗 例如,我可能想返回 名称,字段2,字段3 从 如果您询问如何使用SqlClient组件,例如,可以使用 Reader.GetName(columnNumber) 方法返回列名。如果您有数据集或数据表,则可以访问其列属性,该属性是数据列对象的集合。然后可以按如下方式访问列名: // assume dt is DataTable string c

我想获取从sql语句返回的字段名列表。这可以通过使用sql语句或一些c#解析代码将语句解析为字符串来完成。不需要编写复杂的解析器就可以轻松完成这项工作吗

例如,我可能想返回

名称,字段2,字段3


如果您询问如何使用SqlClient组件,例如,可以使用

Reader.GetName(columnNumber)

方法返回列名。

如果您有
数据集
数据表
,则可以访问其
属性,该属性是
数据列
对象的集合。然后可以按如下方式访问列名:

// assume dt is DataTable
string colname = dt.Columns[0].ColumnName;

如果您使用的是大多数人都使用的SqlDataReader,则可以使用以下代码检索字段名

Private Shared Function GetDataRecordColumns(ByVal dr As SqlClient.SqlDataReader) As List(Of String)

    '' list to contain the columns
    Dim ls As New List(Of String)

    For x As Integer = 0 To dr.FieldCount - 1
        ls.Add(dr.GetName(x))
    Next

    Return ls

End Function
如果您使用的是dataset或datatable,则可以使用以下函数(如果您使用的是dataset,只需传入dataset.Table(0))

希望这有帮助


这听起来像是我想要的那种东西。唯一的缺点是它需要一个db命中,我想这是需要的。我可以改变statemt,只返回一个方法,然后使用读取器获取name@Sheff“需要db命中”:是的。编写SQL解析器的另一种选择需要考虑聚合表达式、子查询、…因此不容易。这是vb-OP指定的C#
Private Shared Function GetDataRecordColumns(ByVal dr As SqlClient.SqlDataReader) As List(Of String)

    '' list to contain the columns
    Dim ls As New List(Of String)

    For x As Integer = 0 To dr.FieldCount - 1
        ls.Add(dr.GetName(x))
    Next

    Return ls

End Function
Private Shared Function GetDataRecordcolumns(ByVal dt As DataTable) As List(Of String)

        Dim ls As New List(Of String)

        For Each col As DataColumn In dt.Columns
            ls.Add(col.ColumnName)
        Next

        Return ls

 End Function