- - PR -
DataTableに対する並び替えについて
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-21 21:21
餅宮餅喜 さん
んと、“データベース”をどう考えるか、ではないでしょうか?私は「データベース管理ソフト」とは言っていないですよね 。CSV ファイルだろうと、エクセルのワークシートだろうと、はたまた XML ファイルだろうと、データの塊だったらデータベースじゃないでしょうか? そして、DataTable クラスは、そういう意味ではデータベースなんですね。 苦しい? テキストファイルの場合、1行目あるいは先頭の数行には色々な意味がある場合があります。しかし、DataTable に放り込む時点で、そういう情報は切り落としますよね?または、DataColumn など、別のところへ情報を移します。 こうなると、横方向には意味がありますが、縦方向には意味はなくなるのでは? いや、テキストファイルの場合、色々意味を持たせている場合もありますが、、、逆に、順番に意味を持っているなら順番を変えてはいけないのではないでしょうか? 最初の投稿の意図は、何をするために、こうしようとしているのかがわからない、というところから来ています。あの投稿でメインは、『意図は、何でしょう?』です。DataView によってソートできることがわかっていながら、DataTable が持っている DataRowCollection の並びを変えなければならない、そういう状況に追い込まれた理由を聞くことです。 データソースから取り出したデータをユーザに見せるのか、それをさらにユーザ指示によりソートしようとしているか、最初の質問からはわからないですよね。
ここで大事なのは、現在の仕様や、まわりの実装とそこから導き出される楽な方法、ではありません。ソートをするタイミングです。これによっては、まわりの実装がしんどくなろうが、ビジネスロジックとして切り出しているならなおさら、DataTable をソートによって再構成するべきではありません。 データソース(ここではデータベースであったり CSV ファイルであったり、とにかく DataTable に放り込むデータの元)から取り出した直後のデータであるなら、DataTable に放り込む時にソートするべきです。メモリや時間を無駄にすることはありません。 何らかの変更が加わっている可能性のあるデータをソートするのであれば、DataTable を再構成してはいけません。なぜなら、RowState の情報が落ちる(おそらく、Added になる)ため、データソースに書き戻すことが困難になるからです。 見せるだけのデータであっても、ユーザが任意にソートを指示できるなら、表示部で実装するべきです。ソートのためにラウンドトリップを発生させるなんて、ばからしいからです(Web Service なのだから、利用側のプログラムで何とかなるという判断)。発生させるのであっても、DataTable を最初に構成するときにソートするべきでしょう。 …と思うのですが、いかがでしょうか? # ソートをするところを一箇所にまとめたい、というだけのような気がするですよ _________________ | ||||||||||||||||
|
投稿日時: 2005-07-22 09:54
おはようございます。餅宮です。
Jittaさんわざわざすいません。。。データベースって言葉に過剰に反応したみたいで、申し訳ないです。
DataTableは、名前の通りなんですがテーブルですよね、そのデータベース(XML,CSV,EXCEL)がどういった形でデータを管理しているかは別として。 そのテーブルをどう切り出して使用するかは、DataViewに任せるといった形になりますよね。 自分にわかりやすいたとえるなら、DataTableはデータベースのテーブルで、DataViewはSQL文といった形でしょうか。
ですね、この辺の配慮?が自分には欠けているなっと思います。もっと背景を考慮出来るように精進します。 #スレ主の最初の投稿はソートしたいだけなのかなと。。。思ったわけです。
了解です。 |