我从没想过我会问这个。。。我需要一种在C#中模仿PHP的ksort
函数的方法。
问题是。。。PHP会这样做。。。
PHP代码
$arr = array(
"tagValues" => "asdfasd",
"email" => "asdfasd",
"referrer" => "asdfasd",
"tags" => "asdfasd",
);
echo "Base array nn";
print_r($arr);
ksort($arr);
echo "nnksort'ed array nn";
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哈希。当我翻译成C#时,他们的PHP代码段的操作与我预期的不同,所以哈希总是不正确的。
关键字是StringComparer.Oordinal
string[] sortedKeys= form.AllKeys.OrderBy(x => x,StringComparer.Ordinal).ToArray();