【问题标题】:compare two data set and update row if record found match如果记录找到匹配,则比较两个数据集并更新行
【发布时间】:2020-10-04 05:21:58
【问题描述】:

我有两个数据集:

数据集 1:ds1

        **Year            Period          Allowed**
         2012               1 
         2013               2
         2014               3
         2015               5

数据集 2:ds2

       **Year            Period**     
         2012               1 
         2012               2
         2014               3
         2014               5   

所需数据集:

         **Year            Period          Allowed**
         2012               1                0
         2013               2                1
         2014               3                0
         2015               5                1

我想一一比较两个数据集行(年份和期间),如果发现记录相同 然后添加第一个数据集(即ds1)的列(允许)的值“0”

注意:第一个数据集的年份和周期必须与第二个数据集的年份和周期相同

这是我的代码:

 for (int ds = 0; ds < ds1.Tables[0].Rows.Count; ds++)
       {            
         string year = ds1.Tables[0].Rows[ds]["YEAR"].ToString();
         string per = ds1.Tables[0].Rows[ds]["PER"].ToString();

 for (int count = 0; count < ds2.Tables[0].Rows.Count; count++)
        {
      string year1 = dsAllwedUser.Tables[0].Rows[count]["YEAR"].ToString();
      string per1 = dsAllwedUser.Tables[0].Rows[count]["PER"].ToString();
          if (year == year1 && per == per1)
                  {
                     row["Allowed"] = "0";
                     ds1.Tables[0].AcceptChanges();
                      row.SetModified();
                  }
            else
                {
                    row["Allowed"] = "1";
                    ds1.Tables[0].AcceptChanges();
                    row.SetModified();
                        }
                    }
                }

如果我错了,请纠正我......提前谢谢!

【问题讨论】:

    标签: c# .net dataset


    【解决方案1】:

    比较一个数据集和另一个数据集的好方法是使用DataTable.Select()

    private static DataSet GetAllowdDataSet(DataSet ds1, DataSet ds2)
    {
        DataSet ds = new DataSet();
        ds.Tables.Add(new DataTable());
        ds.Tables[0].Columns.Add("YEAR");
        ds.Tables[0].Columns.Add("PER");
        ds.Tables[0].Columns.Add("ALLOWED");
        DataRow[] dr = null;
        for (int i = 0; i < ds1.Tables[0].Rows.Count; i++)
        {
            string year = Convert.ToString(ds1.Tables[0].Rows[i]["YEAR"]);
            string per = Convert.ToString(ds1.Tables[0].Rows[i]["PER"]);
            dr = ds2.Tables[0].Select(string.Format(" YEAR = '{0}' AND PER = '{1}'", year, per));
            if (dr.Count() > 0)
            {
                ds.Tables[0].Rows.Add(new String[] { year, per, "0" });
            }
            else
            {
                ds.Tables[0].Rows.Add(new String[] { year, per, "1" });
            }
        }
    
        return ds;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2021-03-01
      相关资源
      最近更新 更多