- PR -

DataTableに対する並び替えについて

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-07-21 21:21
餅宮餅喜 さん
引用:

 例えば、CSVファイルと、DBの値のどちらかが帰ってくることを期待している場合に、DataTableクラスを使用してはならないということですか?とすると、他に妥当なクラスはあるのでしょうか


 んと、“データベース”をどう考えるか、ではないでしょうか?私は「データベース管理ソフト」とは言っていないですよね 。CSV ファイルだろうと、エクセルのワークシートだろうと、はたまた XML ファイルだろうと、データの塊だったらデータベースじゃないでしょうか?
 そして、DataTable クラスは、そういう意味ではデータベースなんですね。 苦しい?

 テキストファイルの場合、1行目あるいは先頭の数行には色々な意味がある場合があります。しかし、DataTable に放り込む時点で、そういう情報は切り落としますよね?または、DataColumn など、別のところへ情報を移します。
 こうなると、横方向には意味がありますが、縦方向には意味はなくなるのでは?

 いや、テキストファイルの場合、色々意味を持たせている場合もありますが、、、逆に、順番に意味を持っているなら順番を変えてはいけないのではないでしょうか?


 最初の投稿の意図は、何をするために、こうしようとしているのかがわからない、というところから来ています。あの投稿でメインは、『意図は、何でしょう?』です。DataView によってソートできることがわかっていながら、DataTable が持っている DataRowCollection の並びを変えなければならない、そういう状況に追い込まれた理由を聞くことです。
 データソースから取り出したデータをユーザに見せるのか、それをさらにユーザ指示によりソートしようとしているか、最初の質問からはわからないですよね。
引用:

今回のプロジェクトではWebServiceを使用したビジネスロジックからSOAPで画面側にデータセットを返す仕様
しかし周辺の影響力を考慮すると、ビジネスロジック側でやる方が賢明


 ここで大事なのは、現在の仕様や、まわりの実装とそこから導き出される楽な方法、ではありません。ソートをするタイミングです。これによっては、まわりの実装がしんどくなろうが、ビジネスロジックとして切り出しているならなおさら、DataTable をソートによって再構成するべきではありません。

 データソース(ここではデータベースであったり CSV ファイルであったり、とにかく DataTable に放り込むデータの元)から取り出した直後のデータであるなら、DataTable に放り込む時にソートするべきです。メモリや時間を無駄にすることはありません。
 何らかの変更が加わっている可能性のあるデータをソートするのであれば、DataTable を再構成してはいけません。なぜなら、RowState の情報が落ちる(おそらく、Added になる)ため、データソースに書き戻すことが困難になるからです。
 見せるだけのデータであっても、ユーザが任意にソートを指示できるなら、表示部で実装するべきです。ソートのためにラウンドトリップを発生させるなんて、ばからしいからです(Web Service なのだから、利用側のプログラムで何とかなるという判断)。発生させるのであっても、DataTable を最初に構成するときにソートするべきでしょう。

…と思うのですが、いかがでしょうか?
# ソートをするところを一箇所にまとめたい、というだけのような気がするですよ

_________________
餅宮餅吉
ベテラン
会議室デビュー日: 2005/03/04
投稿数: 57
お住まい・勤務地: 月餅のうまい店の隣
投稿日時: 2005-07-22 09:54
 おはようございます。餅宮です。

 Jittaさんわざわざすいません。。。データベースって言葉に過剰に反応したみたいで、申し訳ないです。

引用:

Jittaさんの書き込み (2005-07-21 21:21) より:
餅宮餅喜 さん
引用:

 例えば、CSVファイルと、DBの値のどちらかが帰ってくることを期待している場合に、DataTableクラスを使用してはならないということですか?とすると、他に妥当なクラスはあるのでしょうか


 んと、“データベース”をどう考えるか、ではないでしょうか?私は「データベース管理ソフト」とは言っていないですよね 。CSV ファイルだろうと、エクセルのワークシートだろうと、はたまた XML ファイルだろうと、データの塊だったらデータベースじゃないでしょうか?
 そして、DataTable クラスは、そういう意味ではデータベースなんですね。 苦しい?


 DataTableは、名前の通りなんですがテーブルですよね、そのデータベース(XML,CSV,EXCEL)がどういった形でデータを管理しているかは別として。 そのテーブルをどう切り出して使用するかは、DataViewに任せるといった形になりますよね。

 自分にわかりやすいたとえるなら、DataTableはデータベースのテーブルで、DataViewはSQL文といった形でしょうか。

引用:

 最初の投稿の意図は、何をするために、こうしようとしているのかがわからない、というところから来ています。あの投稿でメインは、『意図は、何でしょう?』です。DataView によってソートできることがわかっていながら、DataTable が持っている DataRowCollection の並びを変えなければならない、そういう状況に追い込まれた理由を聞くことです。
 データソースから取り出したデータをユーザに見せるのか、それをさらにユーザ指示によりソートしようとしているか、最初の質問からはわからないですよね。


 ですね、この辺の配慮?が自分には欠けているなっと思います。もっと背景を考慮出来るように精進します。
#スレ主の最初の投稿はソートしたいだけなのかなと。。。思ったわけです。

引用:

…と思うのですが、いかがでしょうか?
# ソートをするところを一箇所にまとめたい、というだけのような気がするですよ


了解です。

スキルアップ/キャリアアップ(JOB@IT)