c# - 在 C# 中模仿 PHP 的 ksort

标签 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 创建按 alpha 顺序排序的输入参数的 MD5 哈希值应用程序接口(interface)。当我翻译成 C# 时,他们的 PHP 代码片段的运行方式与我预期的不同,因此散列总是不正确。

最佳答案

关键字是 StringComparer.Ordinal

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

关于c# - 在 C# 中模仿 PHP 的 ksort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12187487/

相关文章:

c# - 如何使用 Entity Framework 按日期而不是随时间分组

c# 测试对象是否使用 .GetType().GetInterface(typeof(ISurface<>).FullName) 实现任何类型的 ISurface<T>

c# - 为什么我的上下文菜单不能使用 DataContext={Binding}?

没有 DB 生成框架的 PHP MySQL 页面生成

c# - 根据 C# 中对象列表中不同属性的值组合特定属性的值?

PHP SimpleXMLElement 不对实体进行引号

php - WordPress插件国际化: variables not translated?

c# - 如何防止 MVC3 上的多个帖子?

c# - 为什么从查询字符串中删除反斜杠 - ASP.NET 和 Javascript

c# - 实例方法调用 Dispose