在C#中将DataRow对象添加到DataTable

时间:2012-04-22 10:01:45

标签: c# datatable

我试图遍历我的数据库,寻找具有日期范围的特定行。 每当我尝试使用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();
    }

1 个答案:

答案 0 :(得分: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();
}