如何通过C#获取第二列的值,即与dataTable中的另一列相同的名称

时间:2016-05-27 02:33:21

标签: c# sql-server datatable

我在SQL Server中调用存储过程获得了dataTable,它有2个具有相同名称的列:NAME_PROJECT

示例:此查询的结果:

SELECT
    NAME_PROJECT,
    DATE,
    ...
    NAME_PROJECT,
    ...
FROM
    TABLE_A

这是我在C#中的代码,它总是得到第一列的值:

dataTable.Rows[i].Field<string>("NAME_PROJECT")

由于某些原因,我无法从SQL更改KEY“NAME_PROJECT”以避免使用相同名称列。

如何在此问题中获取第二个NAME_PROJECT列的值?

谢谢!

3 个答案:

答案 0 :(得分:0)

Field也被重载以接受列索引,在这种情况下你可以使用传递索引。

dataTable.Rows[i].Field<string>(2);

<强>更新

由于你想在有重复的列名时取第二列,我建议你这样做。

var column = dataTable.Columns
                      .OfType<DataColumn>()
                      .LastOrDefault(x=> x.ColumnName == "columnname");

if(column != null)
{
     dataTable.Rows[i].Field<string>(column); 
}

答案 1 :(得分:0)

您可以在查询中为其中一个重复的列名设置别名,以便存储过程返回的结果集不会出现重复的列名称问题

答案 2 :(得分:0)

一种解决方案是使用索引来选择所需的列。

string Second_Name_Porject = dataTable.Rows[i].ItemArray[2];