前提・実現したいこと
DataTable型の変数の特定の行以降のデータを別のDataTableとして取得したいです。
以下のソースで特定の行の行番号は取得できました。
DataTable型変数dtの 取得した行番号以降の行を取得したいのですが、
ループで一行ずつ追加していく以外に方法は無いのでしょうか?
試したこと
var index = dt.Rows.IndexOf(dt.AsEnumerable().Where(x["col1"].tostring == "テスト").FirstOrDefault()); For Each row As DataRow In dt.Rows If dt.Rows.indexOf(row) >= index Then "datatable型変数にaddする" End If Next
DataRowCollection に AddRange が無いので一行ずつ追加することになりますが、何か問題がありますか? コピー先が DataTable でなく配列なら CopyTo が使えますし、一行ずつと言っても LINQ を使えばもう少し簡潔に書けます。
ちなみに私なら index は取りません。SkipWhile を使って該当行まで読み飛ばします。
抽出条件が DataView.RowFilter プロパティで設定できるなら、それで抽出後 DataView.ToList() メソッドで DataTable が取得できると思いますが? メソッドの中ではループを使っているのかもしれませんけど・・・
SurferOnWww さんありがとうございます。初めて知りました。table.Rows.Cast<DataRow>().SkipWhile(row => row["col1"].ToString() != "テスト").CopyToDataTable(); でテーブルにできますね。