在C#中模仿PHP的ksort

joc*_*ull 1 php c# linq ksort

我从没想过我会问这个...我需要一种方法来模仿PHP ksort在C#中的功能.

这是问题...... 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);
Run Code Online (Sandbox Code Playgroud)

PHP输出

Base array 

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


ksort'ed array 

Array
(
    [email] => asdfasd
    [referrer] => asdfasd
    [tagValues] => asdfasd
    [tags] => asdfasd
)
Run Code Online (Sandbox Code Playgroud)

如果我在C#中这样做...

string[] sortedKeys = form.AllKeys.OrderBy(x => x).ToArray();
Run Code Online (Sandbox Code Playgroud)

它以不同的顺序出现.tags将在以前tagValues,因为它应该是正确的.这是真正的字母顺序.

我的理解是ksort在阵列上做一些区分大小写的ASCII工作,这就是为什么它以不同的顺序出现的原因.

我怎样才能在C#中实现它?最好用LINQ.谢谢!

对于那些对背景故事感兴趣的人......

我基本上试图根据FastSpring API 创建按字母顺序排序的输入参数的MD5哈希值.他们的PHP代码段运行方式与我转换为C#时的预期不同,因此哈希值始终不正确.

L.B*_*L.B 7

关键字是StringComparer.Ordinal

string[] sortedKeys= form.AllKeys.OrderBy(x => x,StringComparer.Ordinal).ToArray();
Run Code Online (Sandbox Code Playgroud)