我正在尝试使用基于与字典匹配的键的字典值来更新Datatable。以下是代码段。它没有得到更新。
ehcache
答案 0 :(得分:0)
即使它会以这种方式工作,您也会使用"Yes"
而不是字典中的值来更新它。您还使用Enumerable.Select
代替Dictionary.ContainsKey
这是真正的问题。
所以我认为这将解决两个问题:
dt.AsEnumerable()
.Where(row => test.ContainsKey(row.Field<string>("col1")))
.ToList<DataRow>()
.ForEach(row => row["value"] = test[row.Field<string>("col1")]);
不是创建该列表以使用ForEach
,而是选择不同的方法:
var newValues = from row in dt.AsEnumerable()
join kv in test on row.Field<string>("col1") equals kv.Value
select new{ DataRow = row, NewValue = kv.Value };
foreach (var x in newValues)
x.DataRow["col1"] = x.NewValue;
答案 1 :(得分:0)
这是您正在寻找的解决方案吗? 根据对您问题的理解,我有以下解决问题的方法。当我遇到类似的问题时,这可以帮助我解决问题。
dtNewLCM.AsEnumerable().Where(row => row.Field<string>("col1")=="key1")
.Select(b => b["value"] = "MyValue.")
.ToList();
尝试一下...!