【问题标题】:Get value from dataset cell从数据集单元格中获取值
【发布时间】:2014-09-05 02:25:35
【问题描述】:

我正在尝试获取数据集中特定单元格的值。我有一个至少有两个表的数据集(可能更多)。其中一张表有两列 - Name$ 和 Value$。

我必须按名称为“FirstName”的名称列搜索数据集,并保存与该特定名称对应的值。

这是我目前所拥有的:

string val = null;
foreach (DataTable dt in ds.Tables)
{
    foreach (DataRow dr in dt.Rows)
    {
        foreach (DataColumn dc in dt.Columns)
        {
            object item = dr[dc];

            if (item.ToString().Equals("Name$"))
            {
                // store the value for that name
            }
        }
    }
}

任何想法如何发生,请记住数据集中可能有很多表。

编辑:这是完整的解决方案:

foreach (DataTable dt in ds.Tables)
        {
            foreach (DataRow row in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    if (dc.ColumnName.ToString().Equals("Name$"))
                    {
                        if (row["Name$"].ToString().Equals("FirstName"))
                        {
                            firstName = (string)row[row.Table.Columns["Name$"].Ordinal + 1];
                        }

                        if (row["Name$"].ToString().Equals("LastName$"))
                        {
                            lastName = (string)row[row.Table.Columns["Name$"].Ordinal + 1];
                        }
                    }
                }
            }
        }

【问题讨论】:

    标签: c# dataset


    【解决方案1】:

    使用 ColumnName 属性

    string val = null;
    foreach (DataTable dt in ds.Tables)
    {
        foreach (DataRow dr in dt.Rows)
        {
            foreach (DataColumn dc in dt.Columns)
            {
                if(dc.ColumnName=="Name")
                  {
                        //save
                  }
            }
        }
    }
    

    【讨论】:

    • 谢谢!我已经接受了你的回答,我正在用完整的解决方案编辑我的帖子,以防其他人需要它。
    【解决方案2】:
    foreach (DataRow dr in ds.Tables[0].Rows) //Tables[1]....
    {
        if(dr["ColumName"].ToString()==....)
            // store the value for that name
    }
    

    for (int i = 0; i < ds.Tables.Count; i++)
    {
        foreach (DataRow dr in ds.Tables[i].Rows)
        { 
            //dr....
        }
    }
    

    【讨论】: