1

我正在尝试遍历我的数据库以查找具有日期范围的特定行。每当我尝试使用 DataTable.Import(DataRow) 时,它都会添加一个内部没有值的新行。如何将 DataRow “导入”到 DataTable 中?这是循环,谢谢!

        public DataTable FilterDataTableByDates(DataTable td, DateTime from, DateTime to)
    {
        DataTable tempTd = new DataTable();
        foreach (DataRow dr in td.Rows)
        {
            long ticks = Convert.ToInt64(dr["cpd_date"].ToString());
            if (ticks > from.Ticks && ticks < to.Ticks)
            {
                tempTd.ImportRow(dr);
            }
        }
        return tempTd.Copy();
    }
4

1 回答 1

2

您可以使用 Add 方法将 DataRow 从一个数据表复制到另一个:

tempTd.Rows.Add(dr.ItemArray);

甚至您的方法也可以工作,但您必须创建 DataTable 来应对来自原点的结构:

DataTable tempTd = td.Clone();

使用Clone()方法,您可以创建一个与原始数据表具有相同结构的新数据表,然后您可以在其中导入行。

所以你的完整方法将变为:

public DataTable FilterDataTableByDates(DataTable td, DateTime from, DateTime to)
{
    DataTable tempTd = td.Clone();
    foreach (DataRow dr in td.Rows)
    {
        long ticks = Convert.ToInt64(dr["cpd_date"].ToString());
        if (ticks > from.Ticks && ticks < to.Ticks)
        {
            tempTd.ImportRow(dr);
        }
    }
    return tempTd.Copy();
}
于 2012-04-22T10:12:31.177 回答