C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: DataViewのSortについて


(過去ログ 112 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■66343 / inTopicNo.1)  DataViewのSortについて
  
□投稿者/ mog (4回)-(2013/04/16(Tue) 20:11:34)

分類:[VB.NET/VB2005 以降] 

開発環境
Windows XP SP3
Visual Studio 2010(VB.NET)
.NET Framework 4.0

DataViewのSortプロパティにつきまして。

DataViewのSortプロパティに漢字で始まる列を指定した場合、
VisualStudio2003と2010で並べ替えの結果が異なります。
VS2003の場合はUnicodeの文字コード、VS2010の場合はShift-JISの文字コードあたりで
並べ替えが行われているように見えます。

2003と2010(.NET Framework 1.1と.NET Framework 4.0)で並べ替えの仕様が変わったのでしょうか?
msdnで各バージョンのDataViewの説明を読みましたが、漢字のSort順に関する記載が見つかりませんでした。
並べ替え仕様について記載されているドキュメントなどがありましたら教えてください。
よろしくお願いいたします。
引用返信 編集キー/
■66344 / inTopicNo.2)  Re[1]: DataViewのSortについて
□投稿者/ 魔界の仮面弁士 (196回)-(2013/04/16(Tue) 20:32:42)
No66343 (mog さん) に返信
> DataViewのSortプロパティに漢字で始まる列を指定した場合、
> VisualStudio2003と2010で並べ替えの結果が異なります。
実行環境の OS は同一なのですね?

.NET 1.x を動かせるような古い OS が近くに無いので確認できませんが、
まずは、DataTable.Locale プロパティが同じ内容であるかを確認してみてください。
また、Locale を明示的に設定した場合に、結果が変化するかも確認してみてください。


> VS2003の場合はUnicodeの文字コード、VS2010の場合はShift-JISの文字コードあたりで
> 並べ替えが行われているように見えます。
中身については分かりませんが、おそらくは String.Compare を使っていると予想しています。
String.Compare の引数に CultureInfo を指定した場合に、.NET 1.1 と .NET 4 とで
実行結果に差があるかどうか、確認してみてはいかがでしょうか。
引用返信 編集キー/
■66347 / inTopicNo.3)  Re[2]: DataViewのSortについて
□投稿者/ mog (5回)-(2013/04/17(Wed) 10:46:12)
No66344 (魔界の仮面弁士 さん) に返信

返信ありがとうございます。

> ■No66343 (mog さん) に返信
>>DataViewのSortプロパティに漢字で始まる列を指定した場合、
>>VisualStudio2003と2010で並べ替えの結果が異なります。
> 実行環境の OS は同一なのですね?

同一のOSです。

> .NET 1.x を動かせるような古い OS が近くに無いので確認できませんが、
> まずは、DataTable.Locale プロパティが同じ内容であるかを確認してみてください。
> また、Locale を明示的に設定した場合に、結果が変化するかも確認してみてください。

確認したところ、Localeプロパティの値が違っていました。
.NET 1.1の場合「en-US」
.NET 4.0の場合「ja-JP」

Localeを明示的に設定すると、Sort結果が同じになりました。

DataTableはデザイナ上で作成したDataSetを介して使用しています。
msdnのDataTable.Locale プロパティの説明には
「既定値は DataTable が属する DataSet オブジェクトの (Locale プロパティによって返される) CultureInfo」とあったので、
双方のDataSetのLocaleプロパティを確認すると、
.NET 1.1の場合「(既定値)」
.NET 4.0の場合「日本語 (日本)」
となっていました。

.NET 1.1の「既定値」が何を指すのかなどは調べ切れていませんが、
Sort結果が異なる原因が分かりましたので、一旦解決とさせていただきます。
(1.1は今後使用せず、.NET 4.0でのソート結果の方が都合が良いので)

ご回答ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -