我有一种情况要更新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 此示例是单个键比较。我怎样才能为多个键创建它?
谢谢
答案 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]);
}
}