Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据表中获取单元格_C#_Excel_Datatable_Datatables - Fatal编程技术网

C# 从数据表中获取单元格

C# 从数据表中获取单元格,c#,excel,datatable,datatables,C#,Excel,Datatable,Datatables,我正在处理数据表。我有一个是这样的: 好的,我想做的是,例如,如果我在1级(COSC-1218-SIT41SCH),我想得到2级的“Cantidad”单元的红色例如,单元格为C3、C4、C5、C6和C7。如何使用datatables实现这一点?使用。选择还是必须使用循环?我对datatables一无所知。首先,您可以尝试获取“COSC-1218-SIT41SCH”的行索引。然后遍历数据表以获得“Cantidad”。这里是一个简单的演示,你可以参考 DataSet ds = new DataSe

我正在处理数据表。我有一个是这样的:


好的,我想做的是,例如,如果我在1级(COSC-1218-SIT41SCH),我想得到2级的“Cantidad”单元的红色例如,单元格为C3、C4、C5、C6和C7。如何使用datatables实现这一点?使用。选择还是必须使用循环?我对datatables一无所知。

首先,您可以尝试获取“COSC-1218-SIT41SCH”的行索引。然后遍历数据表以获得“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());
    }
}
DataSet ds=新数据集();
DataTable dt=新的DataTable();
//定义一个列表来存储“COSC-1218-SIT41SCH”的行索引
列表=新列表();
私有无效按钮1\u单击(对象发送者,事件参数e)
{
使用(SqlConnection conn=newsqlconnection(@“连接字符串”))
{
SqlDataAdapter sda=新SqlDataAdapter(“从GetCellTest中选择*”,conn);
sda.填充(ds,“T_类”);
}
dt=ds.表格[“T_类”];
foreach(数据行dr在dt.行中)
{
如果(dr[“Level1”].ToString()=“COSC-1218-SIT41SCH”)
{
添加(dt.Rows.IndexOf(dr));
}
}
//过滤第一个
列表。删除(0);
//获取“Cantidad”的值
foreach(列表中的变量i)
{
Console.WriteLine(dt.Rows[i][“Cantidad”].ToString());
}
}

我认为这更像是一个算法问题,一个与数据表相关的问题。谢谢你的回答,它是有效的,但通过这种方式,我有整个级别2的“数量”,所以我有“COSC-1218-sit41sch”的数量列,但也有“COSC-12-IF43SCH”的数量列,我只想得到红色值,即。,COSC-1218-sit41sch下的值。我使用了
dr[“Level1”]。ToString()==“COSC-1218-sit41sch”
,它只过滤满足条件的“Level2”。但如果我们不知道Level1值,我们如何获得红色值?您已知的参数是什么?我已经用所有列编辑了帖子,如果我这样做,我可以知道每一列和每一个单元格的值在哪里:DataTable.Rows[j][I]。。。通过循环,我可以在DataTable上迭代