【问题标题】:Access cell value of datatable访问数据表的单元格值
【发布时间】:2012-02-19 18:46:50
【问题描述】:

谁能帮我访问例如第 4 列中第一个单元格的值?

a b c d
1 2 3 5
g n m l

例如,如果是数据表,如何访问值 d?

谢谢。

【问题讨论】:

    标签: c# asp.net visual-studio-2008 datatable


    【解决方案1】:

    如果需要对单元格值进行弱引用:

    object field = d.Rows[0][3]
    

    object field = d.Rows[0].ItemArray[3]
    

    应该这样做

    如果您需要强类型引用(在您的情况下为字符串),您可以使用 DataRowExtensions.Field 扩展方法:

    string field = d.Rows[0].Field<string>(3);
    

    (在这种情况下,请确保 System.Data 在命名空间中列出)

    索引是基于 0 的,所以我们首先访问第一行 (0),然后访问该行中的第四列 (3)

    【讨论】:

    • @OP 请记住,当硬编码这样的值时,您通常需要先检查以确保确实有足够的行/列。
    • 另见stackoverflow.com/a/13816531/638977 它建议int number = dt.Rows[i].Field&lt;int&gt;(j);
    【解决方案2】:
    foreach(DataRow row in dt.Rows)
    {
        string value = row[3].ToString();
    }
    

    【讨论】:

      【解决方案3】:
      string abc= dt.Rows[0]["column name"].ToString();
      

      【讨论】:

        【解决方案4】:

        您也可以尝试(第 4 列的第一个单元格):

        dt.Rows[0][3]
        

        【讨论】:

          【解决方案5】:

          数据 d 在第 0 行第 3 列 对于值 d:

          DataTable table;
          String d = (String)table.Rows[0][3];
          

          【讨论】:

            【解决方案6】:
            public V[] getV(DataTable dtCloned)
            {
            
                V[] objV = new V[dtCloned.Rows.Count];
                MyClasses mc = new MyClasses();
                int i = 0;
                int intError = 0;
                foreach (DataRow dr in dtCloned.Rows)
                {
                    try
                    {
                        V vs = new V();
                        vs.R = int.Parse(mc.ReplaceChar(dr["r"].ToString()).Trim());
                        vs.S = Int64.Parse(mc.ReplaceChar(dr["s"].ToString()).Trim());
                        objV[i] = vs;
                        i++;
                    }
                    catch (Exception ex)
                    {
                        //
                        DataRow row = dtError.NewRow();
                        row["r"] = dr["r"].ToString();
                        row["s"] = dr["s"].ToString();
                        dtError.Rows.Add(row);
                        intError++;
                    }
                }
                return vs;
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-08-14
              • 2016-09-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多