- PR -

DataTableでのソートにSUBSTRINGを使いたい。

1
投稿者投稿内容
POLPOL
会議室デビュー日: 2004/03/22
投稿数: 2
投稿日時: 2004-03-22 16:49
DataTableをソートするのに、列名でソートではなく、
SUBSTRINGを使って、部分文字列でソートをしたいと考えています。
たとえばSQLで書くと、
AAAという列があるとき、
「ORDER BY SUBSTRING(AAA,2,2),SUBSTRING(AAA,1,1)」
のように書けると思うのですが、DataTableでは可能なのでしょうか?

SelectメソッドかDataViewを使用しようと思ったのですが、
sortプロパティの部分に記述すると、
「SUSTRING(AAAという列名はありません」
という実行エラーになってしまいました。

どなたか教えていただけませんでしょうか?
よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-22 17:01
引用:

POLPOLさんの書き込み (2004-03-22 16:49) より:

sortプロパティの部分に記述すると、
「SUSTRING(AAAという列名はありません」
という実行エラーになってしまいました。


 Sortプロパティに指定できる文字列には、列名とASC、DESCしか指定できないようです(MSDNトピック「DataView を使用したデータの並べ替えとフィルタ処理」で、RowFilterには式の説明があるが、Sortにはないことから判断)。

 対策として、擬似的に列を追加し、その列のExpressionにSUBSTRINGを使用。擬似的に追加した列でソートする、、、というのはいかがでしょうか。
POLPOL
会議室デビュー日: 2004/03/22
投稿数: 2
投稿日時: 2004-03-22 17:20
引用:

Jittaさんの書き込み (2004-03-22 17:01) より:
 対策として、擬似的に列を追加し、その列のExpressionにSUBSTRINGを使用。擬似的に追加した列でソートする、、、というのはいかがでしょうか。



ソートしたDataTableのColumns.Countを使用して、TSV形式の文字列を作成しようと
していたので、擬似的に列を作成してしまうとDataTableのColumnsが変わってしまうと
少し困ってしまいます。
しかし、擬似的にコピーのDataTableを作成する等して対応するしかなさそうですね。

やってみようと思います。
Jittaさん、どうもありがとうございました。
1

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