使用LINQ更新DataTable中的两列

Jai*_*dra 7 c# datatable

我想使用LINQ查询在一行中更新两列DataTable.目前我正在使用以下两行来做同样的事情:

oldSP.Select(string.Format("[itemGuid] = '{0}'", itemGuid)).ToList<DataRow>().ForEach(r => r["startdate"] = stDate);
oldSP.Select(string.Format("[itemGuid] = '{0}'", itemGuid)).ToList<DataRow>().ForEach(r => r["enddate"] = enDate);
Run Code Online (Sandbox Code Playgroud)

如何在一行中使用一个Select

Ser*_*kiy 30

您可以在一个"行"中执行此操作,只需将适当的操作委托传递给ForEach方法:

oldSP.Select(string.Format("[itemGuid] = '{0}'", itemGuid))
     .ToList<DataRow>()
     .ForEach(r => { 
        r["startdate"] = stDate;
        r["enddate"] = enDate;
      });
Run Code Online (Sandbox Code Playgroud)

你也可以使用LINQ to DataSet(看起来比单行更易读):

var rowsToUpdate = 
    oldSP.AsEnumerable().Where(r => r.Field<string>("itemGuid") == itemGuid);

foreach(var row in rowsToUpdate)
{
    row.SetField("startdate", stDate);
    row.SetField("enddate", enDate);
}
Run Code Online (Sandbox Code Playgroud)