使用字典使用基于linq的条件更新数据表

时间:2016-03-14 12:37:35

标签: linq

我正在尝试使用基于与字典匹配的键的字典值来更新Datatable。以下是代码段。它没有得到更新。

ehcache

2 个答案:

答案 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();

尝试一下...!