【问题标题】:datatable get specific column from row数据表从行中获取特定列
【发布时间】:2015-02-19 22:10:24
【问题描述】:

我有以下:

//a datatable with some rows and columns lets say 5x5
var datatable = new DataTable(); 
var numberofrows = datatable.rows.count;

for (int i = 0; i < numberofrows; i++) {
 //for each row, get the 3rd column
 var cell = datatable.rows[i].???
}

如何获取每行的第三列?

【问题讨论】:

    标签: c# datatable


    【解决方案1】:

    第三列

    var cellValue = datatable.Rows[i][2];
    

    更好,如果你知道列名,

    var cellValue = datatable.Rows[i]["column_name"];
    

    【讨论】:

    • 单元格是什么类型的数据类型?我需要使用它而不是'var',这样我才能得到内部值
    • @AbdulAhmad,这取决于列的类型。创建列时(在 datatable.Columns.Add(..) 中添加列),您会重载指定类型。
    • 我明白了,好的,我会调查一下
    【解决方案2】:

    如果表包含 2 列“属性”和“值”。可以按如下方式插入内容

    table.Columns.Add("Property", typeof(string));
    table.Columns.Add("Value", typeof(string));    
    
    table.Rows.Add("P1", "abc");
    table.Rows.Add("P2", "xyz");
    

    检索特定列的内容

    foreach (DataRow row in table.Rows)
        {
          if (row["Property"].ToString() == "P1")
             {
                 var value = row["Value"].ToString();
              }
        }
    

    【讨论】:

      【解决方案3】:

      我们可以像这样读取特定列的值

      foreach (DataTable table in ds.Tables)
                      {
                          if (table.TableName == "Table1")
                          {
      
                              for (int j = 0; j < table.Rows.Count; j++)
                              {
      
      
                                       int a =  Convert.ToInt32( table.Rows[j].ItemArray[3]);
                                       int b = Convert.ToInt32(table.Rows[j].ItemArray[4]);
      
      
      
      
                              }
                          }
      
      
                      }
      

      【讨论】:

        【解决方案4】:

        您可以遍历数据表并获取每一行,这可以被视为一个数组,因此您可以使用索引选择该特定行的每个元素(也可以使用列的名称而不是索引,即:row["column3 name"])。

        foreach(DataRow row in datatable)
        {
            Console.WriteLine(row[2]);
        }
        

        【讨论】:

        • 谢谢,但我不想使用 foreach 循环,因为我想根据索引跳过一些行
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-22
        • 1970-01-01
        • 1970-01-01
        • 2011-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多