【问题标题】:how to update datarow in datatable using LINQ C#?如何使用 LINQ C# 更新数据表中的数据行?
【发布时间】:2018-02-28 10:04:43
【问题描述】:

我想在某些情况下更新datatable(dtTaskandBugs)。
当 id(它是数据表的列)作为参数传递给 functionGetStoryid 时,想要更新数据表中所有行的 storyid。 这是我下面的代码,它不起作用(什么也没发生)

  dtTaskandBugs.Select(string.Format("Storyid = '{0}'", dtTaskandBugs.Rows)).ToList<DataRow>().ForEach(
                r =>
                {
                    r["Storyid"] = GetStoryid(r["Id"]);
                });

【问题讨论】:

标签: c# linq datatable datarow


【解决方案1】:

错误在这里:

string.Format("Storyid = '{0}'", dtTaskandBugs.Rows)

您将此表中的行数作为参数传递给DataTable.Select,它会过滤行,因此可能不会返回任何行。

我建议使用简单的foreach-loop,因为您想更新所有行:

foreach(DataRow row in dtTaskandBugs.Rows)
      row ["Storyid"] = GetStoryid(row["Id"]);

【讨论】:

  • 想要使用 Linq 而不是单独使用 foreach(因为它花费了太多时间)。
  • 需要 LINQ 解决方案
  • @MohitMonga:一个普通的 foreach 循环更快,因为它不需要创建一个中间列表就可以使用List.ForEach(这根本不是 LINQ)。请注意,LINQ 也使用循环,您只是看不到它们
  • @MohitMonga:使用 LINQ 查找行(更新或其他),不要使用它来修改任何内容。 LINQ 应该不会产生任何副作用,它只是一个查询工具。
  • 请提供Linq解决方案,请尝试
猜你喜欢
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多