我从未想过我会问这个问题......我需要一种方法来模仿C#中PHP的ksort
函数。
这就是问题...... 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的alpha顺序创建输入参数的MD5哈希值。
表示,他们的PHP代码段的运行方式与我转换为C#时的预期不同答案 0 :(得分:7)
string[] sortedKeys= form.AllKeys.OrderBy(x => x,StringComparer.Ordinal).ToArray();