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

本文关键字:数据表 获取 | 更新日期: 2023-09-27 18:30:43

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

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],...)

任何帮助将不胜感激。

谢谢。

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

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

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

您最终将得到一个列表,其中包含从第一列开始的所有值,然后

是第二列,然后是第二列。

您实际上想要来自 DataRow 对象列的数据:

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

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

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

如果你想要所有列,你可以通过循环来实现:

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