【问题标题】:Mimic PHP's ksort in C#在 C# 中模仿 PHP 的 ksort
【发布时间】:2012-08-29 22:39:58
【问题描述】:

我从没想过我会问这个...我需要一种方法来模仿 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 哈希。当我翻译成 C# 时,他们的 PHP sn-p 的运行方式与我预期的不同,因此哈希总是不正确的。

【问题讨论】:

    标签: c# php linq ksort


    【解决方案1】:

    关键字是StringComparer.Ordinal

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

    【讨论】:

    • 你的头像让我觉得 SO 上存在布局问题
    • 完美,就是这样。谢谢!
    猜你喜欢
    • 2010-11-25
    • 2011-12-07
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多