如何在C#中获取数据表中列的值?

时间:2014-11-17 19:05:40

标签: c# sql-server datatables

我有一个结构有点像这样的数据表,

Week_Number  Col_A  Col_B  Col_C  Col_D  Col_E
----------------------------------------------
    1         10     20     30     40     50
    2         20     30     40     50     60
    3         30     40     50     60     70
    4         40     50     60     70     80
    5         50     60     70     80     90

这是我在c#中的代码,用于返回数据表的值。

foreach (DataRow dr in dt.Rows)
{
    foreach (DataColumn dc in dr.Table.Columns)
    {
        lst.Add(dr[dc].ToString());
    }
 }

但它会逐行返回值(例如,Row [0] - 1,10,20,30,40,50,Row [1],..)而我希望获得列的值(例如,Col [0] - 1,2,3,4,5,Col [1],...)

任何帮助将不胜感激。

感谢。

3 个答案:

答案 0 :(得分:1)

只需更改循环的顺序,外部循环应位于Columns上,内循环应位于以下行:

foreach (DataColumn dc in dt.Columns)
{
    foreach (DataRow dr in dt.Rows)
    {
        lst.Add(dr[dc].ToString());
    }
}

您最终会得到一个列表,其中包含第一列和第二列以及之后的所有值。

答案 1 :(得分:0)

您实际上想要DataRow对象中的中的数据:

dr.field<int>("Week_Number");
dr["Week_Number"].ToString();

答案 2 :(得分:0)

您可以获得单个列的值,如下所示:

var valueOfColumn = dtTable.Rows[rowIndex][ColumnIndex];

如果你想要所有列,你可以通过循环来做到这一点:

foreach (DataRow dtRow in dtTable.Rows)
{
    foreach(DataColumn dc in dtTable.Columns)
    {
      var field1 = dtRow[dc].ToString();
    }
}