我想使用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);

如何使用一个Select在一行中完成此操作?

最佳答案

您可以在一个“行”中完成此操作,只需将适当的操作委托(delegate)传递给ForEach方法即可:

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

您还可以使用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);
}

关于c# - 使用LINQ更新数据表中的两列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19855772/

10-10 21:42