2

我从没想过我会问这个……我需要一种ksort在 C# 中模仿 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();

它以不同的顺序出现。tagswill be before tagValues,因为它理应如此。这是真正的字母顺序。

我的理解是ksort对数组进行某种区分大小写的 ASCII 工作,这就是为什么它以不同的顺序出现的原因。

如何在 C# 中实现它?最好使用 LINQ。谢谢!

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

我基本上是在尝试创建一个输入参数的 MD5 哈希,按照FastSpring API 的 alpha 顺序排序。当我翻译成 C# 时,他们的 PHP 代码片段的运行方式与我预期的不同,因此哈希值总是不正确的。

4

1 回答 1

9

关键字是StringComparer.Ordinal

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