我有一个名为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();
}
我正在尝试这个,但它给予例外。 请为此提供解决方案,或者如何使用选择查询
答案 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();