C# 将一个数据表复制到另一个数据表c

C# 将一个数据表复制到另一个数据表c,c#,winforms,datatable,C#,Winforms,Datatable,我有一个名为dt的数据表,它有日期、名称、主题等列。 我想使用where条件将此dt的一部分复制到另一个datatable dt3 foreach (DataRow row in dt.Rows) { cellData =(DateTime)row["date"]; dt3 = dt.AsEnumerable() .Where (rows =>rows.Field<DateTime>("date")== cellData

我有一个名为dt的数据表,它有日期、名称、主题等列。 我想使用where条件将此dt的一部分复制到另一个datatable dt3

foreach (DataRow row in dt.Rows)
{
      cellData =(DateTime)row["date"];
      dt3 =  dt.AsEnumerable()
               .Where (rows =>rows.Field<DateTime>("date")== cellData )
               .CopyToDataTable();
}
我正在尝试这个,但它是一个例外。
请给出此问题的解决方案,或者给出如何通过选择查询来使用的解决方案。您正在尝试从每一行筛选表。这是不正确的,将为每一行创建一个datatable

如果要筛选数据表,可以使用dt。选择或使用Linq:

var dateFilter = DateTime.Parse("1/1/2015");
var dt3 = dt.AsEnumerable().Where(x => x.Field<DateTime>("date") == dateFilter).CopyToDataTable();
如果这不是您想要执行的操作,请提供更多解释。

Datatable dt可能有列日期为空的行

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

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

请使用异常详细信息更新您的帖子。异常不能将DBNull.Value强制转换为类型“System.DateTime”。请使用可为空的类型。我正在查询每一行,因为我正在借助此日期创建一个表,并且在执行操作后,我将从dt3中删除所有行,然后再次为另一个日期创建相同的dt3。