使用 linq 将列添加到当前数据表

发布于 2024-12-01 11:02:17 字数 251 浏览 0 评论 0原文

我们可以添加一个新的列,该列是在现有数据表中计算的列,

dt1.Rows.Add(new string[] { "1", "a", "a1" });

dt1 = (from r in dt1.AsEnumerable()
select new {
col3 = r.Field<string>("col1") + r.Field<string>("col2") 
});

结果数据表应该包含新列

Can we add a new Column which is calculated Column in a existing DataTable

dt1.Rows.Add(new string[] { "1", "a", "a1" });

dt1 = (from r in dt1.AsEnumerable()
select new {
col3 = r.Field<string>("col1") + r.Field<string>("col2") 
});

resulting DataTable should contain the new Column

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

万水千山粽是情ミ 2024-12-08 11:02:17

是的,但不能通过 LINQ:

DataColumn col3 = new DataColumn();
col3.DataType = typeof(decimal); // or something suitable
col3.ColumnName = "sum";
col3.Expression = "col1 + col2";
dt1.Columns.Add(col3);

您还可以使用 LINQ 方法创建投影,但这不会更改表(因此分配给 dt1 是一个错误) 。从技术上讲,您可以编写一个表达式解析器来为您编写.Expression,但我不认为这会是一个很好的时间投资。

Yes, but not via LINQ:

DataColumn col3 = new DataColumn();
col3.DataType = typeof(decimal); // or something suitable
col3.ColumnName = "sum";
col3.Expression = "col1 + col2";
dt1.Columns.Add(col3);

You can also use the LINQ approach to create a projection, but that isn't changing the table (so assigning to dt1 is a mistake). Technically you could write an expression parser to write the .Expression for you, but I can't see that this would be a good investment of time.

め可乐爱微笑 2024-12-08 11:02:17

这是减少 For/ForEach 循环的替代解决方案,

 dt1.Columns.Add("sum", typeof(System.Decimal));
 dt1.Columns["sum"].Expression = "'"+Col1+Col2+"'";

<块引用>

这会减少循环时间并快速更新:) Marc 的建议

Here is an alternate solution to reduce For/ForEach looping,

 dt1.Columns.Add("sum", typeof(System.Decimal));
 dt1.Columns["sum"].Expression = "'"+Col1+Col2+"'";

this would reduce looping time and updates quickly :) Kind of Marc's suggestion

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文