【问题标题】:Get Cell from a DataTable从数据表中获取单元格
【发布时间】:2020-03-25 01:53:33
【问题描述】:

我正在使用数据表。我有一个如下:

好的,我想做的是例如如果我在第1级(COSC-1218-SIT41SCH),我想用红色获得第2级的“Cantidad”单元格 . 例如,单元格为 C3、C4、C5、C6 和 C7。我怎样才能用数据表做到这一点?使用 .Select 还是必须使用循环?我对数据表完全陌生。

【问题讨论】:

  • 我认为这更像是一个算法问题,而不是与数据表相关的问题。

标签: c# excel datatable datatables


【解决方案1】:

首先,您可以尝试获取“COSC-1218-SIT41SCH”的行索引。然后遍历DataTable得到“Cantidad”。这是一个简单的演示,您可以参考。

DataSet ds = new DataSet();
DataTable dt = new DataTable();
// Define a list to store the row index of "COSC-1218-SIT41SCH"
List<int> list = new List<int>();

private void button1_Click(object sender, EventArgs e)
{
    using (SqlConnection conn = new SqlConnection(@"Connection String"))
    {
        SqlDataAdapter sda = new SqlDataAdapter("Select * From GetCellTest", conn);
        sda.Fill(ds, "T_Class");
    }

    dt = ds.Tables["T_Class"];

    foreach (DataRow dr in dt.Rows)
    {
        if (dr["Level1"].ToString() == "COSC-1218-SIT41SCH")
        {
            list.Add(dt.Rows.IndexOf(dr));
        }
    }

    // Filter the first one
    list.Remove(0);

    // Get the value of "Cantidad"
    foreach(var i in list)
    {
        Console.WriteLine(dt.Rows[i]["Cantidad"].ToString());
    }
}

【讨论】:

  • 感谢您的回答,它可以工作,但是这样我就有了整个2级的“数量”,所以我有“COSC-1218-sit41sch”的数量列但是数量列“COSC-12-IF43SCH”也是,我只想得到红色值,即COSC-1218-sit41sch下的值。
  • 我用的是dr["Level1"].ToString() == "COSC-1218-SIT41SCH",它只过滤满足条件的“Level2”而不是全部。
  • 但是如果我们不知道Level 1的值,我们怎么能得到红色的值呢?
  • 你的已知参数是什么?
  • 我已经编辑了包含所有列的帖子,如果我这样做,我可以知道每列和每个单元格的值在哪里: DataTable.Rows[j][i] ... 带有循环我可以遍历 DataTable
猜你喜欢
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
相关资源
最近更新 更多