在C#中模仿PHP的ksort

时间:2012-08-29 22:39:58

标签: c# php linq ksort

我从未想过我会问这个问题......我需要一种方法来模仿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#时的预期不同

1 个答案:

答案 0 :(得分:7)

关键字为StringComparer.Ordinal

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