【问题标题】:How to get the values of a column in data table in C#?如何在 C# 中获取数据表中列的值?
【发布时间】:2014-11-17 19:05:39
【问题描述】:

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

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# sql-server datatables


    【解决方案1】:

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

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

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

    【讨论】:

    • @Arpita,它应该可以工作,确保你的 DataTable 有值,并且任何单元格都没有 null 值,你有任何异常吗?
    • 没有。结果只是空白。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你可以得到单列的值如下:

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

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

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

      【讨论】:

      • 我想获取所有列,但这也没有用。
      猜你喜欢
      • 2019-07-27
      • 1970-01-01
      • 2012-01-23
      • 2012-05-21
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多