C# 比较两个数据集,如果发现记录匹配,则更新行

C# 比较两个数据集,如果发现记录匹配,则更新行,c#,.net,dataset,C#,.net,Dataset,我有两个数据集: 数据集1:ds1 **Year Period Allowed** 2012 1 2013 2 2014 3 2015 5 数据集2:ds2 **Year Period** 2

我有两个数据集:

数据集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
我想逐一比较这两个数据集行(年和期间),并确定记录是否相同 然后在第一个数据集的列(允许)中添加值“0”(即ds1

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

这是我的密码:

 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();
                        }
                    }
                }
for(int-ds=0;ds

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

比较一个数据集与另一个数据集的好方法是使用

私有静态数据集GetAllowdDataSet(数据集ds1、数据集ds2)
{
数据集ds=新数据集();
Add(newdatatable());
表[0].Columns.Add(“年”);
表[0].Columns.Add(“PER”);
表[0].Columns.Add(“允许”);
DataRow[]dr=null;
对于(int i=0;i0)
{
表[0].Rows.Add(新字符串[]{year,per,“0”});
}
其他的
{
表[0].Rows.Add(新字符串[]{year,per,“1”});
}
}
返回ds;
}
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;
}