我在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列的值?
谢谢!
答案 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];