【问题标题】:Copying one datatable to another datatable c#将一个数据表复制到另一个数据表c#
【发布时间】:2015-08-19 08:30:01
【问题描述】:

我有一个名为 dt 的数据表,其中包含 date 、name、subject 等列。 我想使用 where 条件将此 dt 的一部分复制到另一个数据表 dt3。

foreach (DataRow row in dt.Rows)
{
      cellData =(DateTime)row["date"];
      dt3 =  dt.AsEnumerable()
               .Where (rows =>rows.Field<DateTime>("date")== cellData )
               .CopyToDataTable();
}

我正在尝试这个,但它给出了例外。 请为此提供解决方案,否则如何通过选择查询来使用

【问题讨论】:

  • 请更新您的帖子并提供异常详情。
  • 例外是 - 无法将 DBNull.Value 转换为类型“System.DateTime”。请使用可为空的类型。

标签: c# winforms datatable


【解决方案1】:

您正在尝试从每一行中过滤您的表格。这是不正确的,会为每一行创建一个数据表。

如果你想过滤你的数据表,你可以使用 dt.Select() 或使用 Linq :

var dateFilter = DateTime.Parse("1/1/2015");
var dt3 = dt.AsEnumerable().Where(x => x.Field<DateTime>("date") == dateFilter).CopyToDataTable();

如果这不是您想要执行的操作,请提供更多解释。

【讨论】:

  • 我正在查询每一行,因为我在此日期的帮助下创建了一个表,并且在进行操作之后,我从 dt3 中删除了所有行,然后再次在另一个日期创建一个相同的dt3.
【解决方案2】:

数据表 dt 可能具有列 date

具有空值的行

比较日期时使用可为空的 DateTime

 dt3 = dt.AsEnumerable()
              .Where(rows => rows.Field<DateTime?>("date") == cellData )
              .CopyToDataTable();

【讨论】:

    猜你喜欢
    • 2014-03-20
    • 2023-03-16
    • 1970-01-01
    • 2018-07-11
    • 2016-08-16
    • 1970-01-01
    • 2012-11-24
    • 2011-05-16
    • 2011-05-10
    相关资源
    最近更新 更多