- PR -

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

投稿者投稿内容
マグノリア
会議室デビュー日: 2005/07/20
投稿数: 7
投稿日時: 2005-07-20 14:27
C#でDataTableを直接並び替えるにはどうしたら良いでしょうか?
DefaultViewにSortを指定してもDataTableには反映されないし、
DefaultView.Sortを指定した後、DefaultView.Table.Copy()で
新しいDataTableを取得しても、並び替えられないようです。

どなたかご存知の方、ご教授ください。
餅宮餅吉
ベテラン
会議室デビュー日: 2005/03/04
投稿数: 57
お住まい・勤務地: 月餅のうまい店の隣
投稿日時: 2005-07-20 15:59
こんにちわ。マグノリアさん。

#詳しい人からレスがつくかもですが・・・
ソートを設定したら、DataTable.Select()を使用する。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-07-20 20:28
> C#でDataTableを直接並び替えるにはどうしたら良いでしょうか?
 データベースの行の並びに意味はありません。どう並んでいたって、データの塊としての意味は変わりません。

 もちろん、それに対して何らかの意味を持たせることはできます。意味を持たせるために DataView があります。

 意味のないことをしようとする意図は、何でしょう?
_________________
マグノリア
会議室デビュー日: 2005/07/20
投稿数: 7
投稿日時: 2005-07-20 21:16
餅宮餅喜さん、返答ありがとうございます。
勉強になりました。無事、DataTableを作成することができました。

Jittaさん、今回のプロジェクトではWebServiceを使用したビジネスロジックから
SOAPで画面側にデータセットを返す仕様なんですが、
当然画面側でViewを作成して加工するやり方も当然あります。
しかし周辺の影響力を考慮すると、ビジネスロジック側でやる方が賢明、
ということです。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-07-21 05:35
引用:

マグノリアさんの書き込み (2005-07-20 21:16) より:

しかし周辺の影響力を考慮すると、ビジネスロジック側でやる方が賢明、
ということです。


 ユーザによっては「この順でみたい、あの順でみたい」という要望が出てくることは当然考えられるため(たとえ今、そういうことはしない仕様であっても、実際に使ってみたら欲しくなる、ということはしょっちゅうあること)、柔軟に対応できるようにしておくべきでは?

 また、DataTable.Select メソッドを使ったと言うことは、これの戻り値は DataRow の配列ですから、デュプリケートして DataTable を作り直した、ということですよね?1つの DataRow は、1つの DataTable にしか所属できませんから。
 ということは、RowState プロパティが変化しているのでは?と思うのですが、それって大丈夫なんでしたっけ?まぁ、見せるだけなら関係ないけど。
_________________
餅宮餅吉
ベテラン
会議室デビュー日: 2005/03/04
投稿数: 57
お住まい・勤務地: 月餅のうまい店の隣
投稿日時: 2005-07-21 09:23
おはようございます、餅宮です。

質問なのですが。
引用:

Jittaさんの書き込み (2005-07-20 20:28) より:
 データベースの行の並びに意味はありません。どう並んでいたって、データの塊としての意味は変わりません。


 マグノリアさんの最初の情報からは、データベースを使用しているとは読み取れなかったのですが、DataTableはデータベースを前提としなければならないのですか?
 例えば、CSVファイルと、DBの値のどちらかが帰ってくることを期待している場合に、DataTableクラスを使用してはならないということですか?とすると、他に妥当なクラスはあるのでしょうか?

#例が妥当ではなかったため、修正

[ メッセージ編集済み 編集者: 餅宮餅喜 編集日時 2005-07-21 09:28 ]
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-07-21 10:54
引用:

餅宮餅喜さんの書き込み (2005-07-21 09:23) より:
おはようございます、餅宮です。

質問なのですが。
引用:

Jittaさんの書き込み (2005-07-20 20:28) より:
 データベースの行の並びに意味はありません。どう並んでいたって、データの塊としての意味は変わりません。


 マグノリアさんの最初の情報からは、データベースを使用しているとは読み取れなかったのですが、DataTableはデータベースを前提としなければならないのですか?
 例えば、CSVファイルと、DBの値のどちらかが帰ってくることを期待している場合に、DataTableクラスを使用してはならないということですか?とすると、他に妥当なクラスはあるのでしょうか?

#例が妥当ではなかったため、修正

[ メッセージ編集済み 編集者: 餅宮餅喜 編集日時 2005-07-21 09:28 ]



そんな事は無いですよ。
ただ、DataViewを介してSortした状態でアクセスできたり
Selectを利用して、Sortした状態でDataRowの配列を取り出したりする事はできるけど、
DataTable自体はSortを意識しないという意味で

引用:

データベースの行の並びに意味はありません。どう並んでいたって、データの塊としての意味は変わりません。




と仰られたのかなと思います。
間違っていたら申し訳ありません。

ただ、どちらにしろ、
DataTableにはDataTableの
DataViewにはDataViewの
役割というものがありますので、
そこの理解は必要だと思います。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
餅宮餅吉
ベテラン
会議室デビュー日: 2005/03/04
投稿数: 57
お住まい・勤務地: 月餅のうまい店の隣
投稿日時: 2005-07-21 11:52
こんにちわ、餅宮です。

NAL-6295さんありがとうございます。

引用:

NAL-6295さんの書き込み (2005-07-21 10:54) より:

そんな事は無いですよ。
ただ、DataViewを介してSortした状態でアクセスできたり
Selectを利用して、Sortした状態でDataRowの配列を取り出したりする事はできるけど、
DataTable自体はSortを意識しないという意味で


そういう意味だったですね。納得です。

引用:

ただ、どちらにしろ、
DataTableにはDataTableの
DataViewにはDataViewの
役割というものがありますので、
そこの理解は必要だと思います。


DataTable=データ
DataView=表示(抽出)情報
という認識なんですが、間違えていますでしょうか?

マグノリアさんのを例とすると、ビジネスロジック側でDataTableを返して、画面側でDataView等を使用してソートする。といった感じに使うと思っていますが。。。

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