【问题标题】:How to Fetch Field Value from Column Name如何从列名中获取字段值
【发布时间】:2014-01-09 14:54:51
【问题描述】:

在从 vb.net 迁移到 c# 的过程中,我在使用 datatable 时遇到了这个问题。所以,在这里你看到我想通过引用列标题的名称从第 1 行获取字段的值:

在 vb.net 中,我能够做到这一点:

Dim mydatatable as As New System.Data.DataTable
Dim myvar as string
myvar = mydatatable.Rows(1).Item("mycategory")

但是 C# 中没有 .item()。然而,有DataArray[],但它只接受整数。

something.InnerText = thisdata.Rows[1].ItemArray[1].ToString();

我是否认为我必须遍历所有 列标题 以匹配列的名称,然后获取它的索引?或者有没有办法像我在 vb.net 中那样工作?

【问题讨论】:

    标签: c# vb.net datatable


    【解决方案1】:

    Rows[1] 返回第二行,即DataRow 类型。 Row 也有几个索引器,它们接受column nameDataColumn objectcolumn index 等:

    something.InnerText = thisdata.Rows[1]["mycategory"].ToString();
    

    基本上上面的行相当于下面的行,其中行显式存储在局部变量中:

    DataRow row = thisdata.Rows[1];
    something.InnerText = row["mycategory"].ToString();
    

    但是这里完全清楚发生了什么。

    【讨论】:

    • 谢谢!我没有意识到Rows 是一个多维数组。我必须再等 12 分钟才能标记答案...
    • @BGM 不完全 - Rows 是一个单维集合,其中包含 DataRows。但是行有索引器。这与多维数组不同,它看起来像rowsArray[rowIndex, columnIndex]
    • 啊。我很欣赏这个教训。感谢您的澄清。
    【解决方案2】:

    如果您已命名列,则可以在括号内引用这些列。

    myvar = mydatatable.Rows[1]["mycategory"]
    

    您也可以使用索引。

    myvar = mydatatable.Rows[1][1]
    

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 2013-03-04
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多