- - PR -
DataTableに対する並び替えについて
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-20 14:27
C#でDataTableを直接並び替えるにはどうしたら良いでしょうか?
DefaultViewにSortを指定してもDataTableには反映されないし、 DefaultView.Sortを指定した後、DefaultView.Table.Copy()で 新しいDataTableを取得しても、並び替えられないようです。 どなたかご存知の方、ご教授ください。 | ||||||||||||
|
投稿日時: 2005-07-20 15:59
こんにちわ。マグノリアさん。
#詳しい人からレスがつくかもですが・・・ ソートを設定したら、DataTable.Select()を使用する。 | ||||||||||||
|
投稿日時: 2005-07-20 20:28
> C#でDataTableを直接並び替えるにはどうしたら良いでしょうか?
データベースの行の並びに意味はありません。どう並んでいたって、データの塊としての意味は変わりません。 もちろん、それに対して何らかの意味を持たせることはできます。意味を持たせるために DataView があります。 意味のないことをしようとする意図は、何でしょう? _________________ | ||||||||||||
|
投稿日時: 2005-07-20 21:16
餅宮餅喜さん、返答ありがとうございます。
勉強になりました。無事、DataTableを作成することができました。 Jittaさん、今回のプロジェクトではWebServiceを使用したビジネスロジックから SOAPで画面側にデータセットを返す仕様なんですが、 当然画面側でViewを作成して加工するやり方も当然あります。 しかし周辺の影響力を考慮すると、ビジネスロジック側でやる方が賢明、 ということです。 | ||||||||||||
|
投稿日時: 2005-07-21 05:35
ユーザによっては「この順でみたい、あの順でみたい」という要望が出てくることは当然考えられるため(たとえ今、そういうことはしない仕様であっても、実際に使ってみたら欲しくなる、ということはしょっちゅうあること)、柔軟に対応できるようにしておくべきでは? また、DataTable.Select メソッドを使ったと言うことは、これの戻り値は DataRow の配列ですから、デュプリケートして DataTable を作り直した、ということですよね?1つの DataRow は、1つの DataTable にしか所属できませんから。 ということは、RowState プロパティが変化しているのでは?と思うのですが、それって大丈夫なんでしたっけ?まぁ、見せるだけなら関係ないけど。 _________________ | ||||||||||||
|
投稿日時: 2005-07-21 09:23
おはようございます、餅宮です。
質問なのですが。
マグノリアさんの最初の情報からは、データベースを使用しているとは読み取れなかったのですが、DataTableはデータベースを前提としなければならないのですか? 例えば、CSVファイルと、DBの値のどちらかが帰ってくることを期待している場合に、DataTableクラスを使用してはならないということですか?とすると、他に妥当なクラスはあるのでしょうか? #例が妥当ではなかったため、修正 [ メッセージ編集済み 編集者: 餅宮餅喜 編集日時 2005-07-21 09:28 ] | ||||||||||||
|
投稿日時: 2005-07-21 10:54
そんな事は無いですよ。 ただ、DataViewを介してSortした状態でアクセスできたり Selectを利用して、Sortした状態でDataRowの配列を取り出したりする事はできるけど、 DataTable自体はSortを意識しないという意味で
と仰られたのかなと思います。 間違っていたら申し訳ありません。 ただ、どちらにしろ、 DataTableにはDataTableの DataViewにはDataViewの 役割というものがありますので、 そこの理解は必要だと思います。 _________________ 「伝える」とは「人に云う」と書く。 http://d.hatena.ne.jp/NAL-6295/ | ||||||||||||
|
投稿日時: 2005-07-21 11:52
こんにちわ、餅宮です。
NAL-6295さんありがとうございます。
そういう意味だったですね。納得です。
DataTable=データ DataView=表示(抽出)情報 という認識なんですが、間違えていますでしょうか? マグノリアさんのを例とすると、ビジネスロジック側でDataTableを返して、画面側でDataView等を使用してソートする。といった感じに使うと思っていますが。。。 | ||||||||||||
