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 に答える