もしFillの後行が一切削除されることがないのであれば、上記方法でできます。 ただ、既存行を削除した場合に削除行が検索されて落ちるのを防ぐのに行状態 フィルタを掛けて、 「.Select("年月=max(年月)", "", DataViewRowState.CurrentRows)」 とする必要がありますけど、それでもmaxの返す値はテーブルに存在する削除行 も含めた全ての行から求められます。 例えばmaxの行が"200409"だとして、これを削除した場合、maxは"200409"のまま ですが、一致する、まだ存在する行はなくなります。 ただし、削除後に行状態を確定してしまってもかまわないプログラムの場合、 AcceptChangesをしてしまえば削除行は本当に削除されるため、上記方法で可能 です。 (とはいえ、行状態を使用して処理を振り分けることのないプログラムなんて あるかどうか?) .Select("", "年月 DESC", DataViewRowState.CurrentRows) として0行目だけ使用すれば大丈夫だと思います・・・。 何かみっともないかもしれませんが。 余談ですが 行の削除は新規行と既存行で振る舞いが異なるようです。 新規行は即座にDataTableから削除され、既存行は、削除がマークされて隠蔽さ れるものの、確定を発行するまで存在はし続けるようです。
行ではなく値がほしいだけであれば、 .Compute("max(年月)", "") でもできると思います。
分類:[.NET]
こんな方法ができないか教えてください。
DataAdapterで取得したデータをデータテーブルに格納します。
そのテーブルから"最大"のもの(年月)を検索することは出来ますか?
データセット.データテーブル.Select("max(年月)")
このように、データテーブルから最大の年月は取得できるのでしょうか?
(このやり方は出来なかったです。第一引数は、検索条件だから駄目だったからかな)
何かいいアドバイスがあれば教えてください