2

こんな質問をしなければならないとは思いもしませんでした... ksortC# で PHP の機能を模倣する方法が必要です。

ここに問題があります... PHPはこれを行います...

PHP コード

$arr = array(
    "tagValues" => "asdfasd",
    "email" => "asdfasd",
    "referrer" => "asdfasd",
    "tags" => "asdfasd",
);

echo "Base array \n\n";
print_r($arr);

ksort($arr);

echo "\n\nksort'ed array \n\n";
print_r($arr);

PHP 出力

Base array 

Array
(
    [tagValues] => asdfasd
    [email] => asdfasd
    [referrer] => asdfasd
    [tags] => asdfasd
)


ksort'ed array 

Array
(
    [email] => asdfasd
    [referrer] => asdfasd
    [tagValues] => asdfasd
    [tags] => asdfasd
)

これをC#で行うと...

string[] sortedKeys = form.AllKeys.OrderBy(x => x).ToArray();

違う順番で出てきます。tags当然のことながら、 の前tagValuesになります。それが真のアルファベット順です。

ksort配列で大文字と小文字を区別する ASCII 処理を行うのは私の理解であり、それが別の順序で出力される理由です。

どうすればC#で実装できますか? できればLINQを使用してください。ありがとう!

裏話が気になる方は…

私は基本的に、FastSpring API ごとにアルファ順にソートされた入力パラメーターの MD5 ハッシュを作成しようとしています。彼らの PHP スニペットは、C# に変換したときの予想とは異なる動作をするため、ハッシュは常に正しくありません。

4

1 に答える 1

9

キーワードはStringComparer.Ordinalです

string[] sortedKeys= form.AllKeys.OrderBy(x => x,StringComparer.Ordinal).ToArray();
于 2012-08-29T22:50:41.913 に答える