データテーブル内のレコードのソート
[ADO.NET]データテーブル(DataTable)内のレコードをソートするには? http://www.atmarkit.co.jp/fdotnet/dotnettips/363dtsort/dtsort.html
を参考に、
DataView dv = new DataView(dt); dv.Sort = "date";
とソート順を指定した。
これをDataGridのソースとして設定するとソート済みのデータが表示される。
しかし、プログラム上で以下のように一覧を取得するとソートされていない。
foreach( DataRow row in dv.Table.Rows ) { foreach( Object col in row.ItemArray ) { Console.Write( "[" + col.ToString() + "]" ); } }
どうやらこのアクセス方法では、元データを参照しているようだ。
ソート済みのデータにアクセスするには、以下のようにしたら参照できた。
foreach( DataRowView drv in dv ) { foreach(DataColumn column in dv.Table.Columns) { Console.Write( "[" + drv[column.ColumnName].ToString() + "]" ); } }
foreachの対象がdvなのがいまいちしっくりこない
dv.DefaultView.Rows とか書きたいところである