更新第一个数据表取决于具有多个键条件的第二个数据表

时间:2018-01-18 10:16:49

标签: c#-4.0 datatable dataset

我有一种情况要更新TABLEA取决于TABLEB,但comaparision键在多个。使用Single comparision键是没问题的

任何人都可以对此有所了解吗?

我在下面使用了以下代码。

                        _dtMaster.AsEnumerable().Join(_dtChild.AsEnumerable(),
                         _dtmater => Convert.ToString(_dtmater[ss.TrimStart().TrimEnd()]),
                         _dtchild => Convert.ToString(_dtchild[ss.TrimStart().TrimEnd()]),
                         (_dtmater, _dtchild) => new { _dtmater, _dtchild }).ToList().ForEach(o =>
                         {
                             for (int i = 0; i <= Field.Count() - 1; i++) //Set value to table
                                 o._dtmater.SetField(Field[i], o._dtchild[Field[i]].ToString());
                         });

我希望从_dtchild表更新数据的数据表中的_dtmaster 此示例是单个键比较。我怎样才能为多个键创建它?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用匿名类型Join

var joined = from m in _dtMaster.AsEnumerable()
             join c in _dtChild.AsEnumerable()
                 on new { Col1 = m.Field<string>("Col1"), Col2 = m.Field<string>("Col2") }
             equals new { Col1 = c.Field<string>("Col1"), Col2 = c.Field<string>("Col2") }
             select new { MasterRow = m, ChildRow = c };

foreach (var both in joined)
{ 
    foreach (DataColumn mCol in both.MasterRow.Table.Columns)
    {
        both.MasterRow.SetField(mCol, both.ChildRow[mCol.Ordinal]);
    }
}