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

时间:2015-08-19 08:30:02

标签: c# winforms datatable

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

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

我正在尝试这个,但它给予例外。 请为此提供解决方案,或者如何使用选择查询

2 个答案:

答案 0 :(得分:1)

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

如果要过滤dataTable,可以使用dt.Select()或使用Linq:

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

如果这不完全符合您的要求,请提供更多说明。

答案 1 :(得分:0)

数据表 dt 可能包含列日期

的空行

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

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