c# - 如何在 C# 中复制 Python 的排序内置函数的行为?

标签 c# python sorting servicestack

我有一个 Python 字典列表。此列表作为 json 在 Web 服务之间传递。这些 Web 服务根据传递的 json 创建唯一的签名。创建签名的一部分是规范化数据有效负载并确保所有内容都按正确的顺序排列,所以我正在这样做(在 Python 中)- 效果很好。

data = [{'a': '1', 'b': '2', 'c': 3}, {'d': 3}, {3: 1}, {'100': '200'}]
sorted(data)
> [{3: 1}, {'100': '200'}, {'d': 3}, {'a': '1', 'c': 3, 'b': '2'}]

现在,我需要将 C# 应用程序添加到组合中,它需要能够创建与 Python 代码完全相同的签名。我还没有发现以与 Python 的 sorted 内置函数相同的方式对上述数据结构进行排序的秘诀。

我正在使用 ServiceStack解析json数据。

我希望它会像做这样的事情一样简单(在 C# 中):

var jsonPayload = "[{\"a\": \"1\", \"b\": \"2\", \"c\": 3}, {\"d\": 3}, {3: 1}, {\"100\": \"200\"}]";                                                                        
var parsedJson = JsonArrayObjects.Parse(jsonPayload);                                                                                                                        
parsedJson.Sort();  

但是,我从上面的 C# 代码中得到了这个异常:

`At least one object just implement IComparable`

我明白我为什么会收到这个错误,但我不确定我应该怎么做。我真的希望我不必推出自己的排序逻辑。我正在处理的实际数据是非常动态的。这只是阻碍我前进的事情的一个例子。

有没有人对我如何在 C# 中进行排序以像 sorted python 函数那样为这种类型的嵌套数据结构提供任何建议或建议?

谢谢!

最佳答案

您可以解决这个问题:从 C# 调用 Python 排序函数,这样您将拥有完全相同的行为。

您可以使用 IronPython :

Python代码:

def Simple():
    print "Hello from Python"
    print "Call Dir(): "
    print dir()

C#代码:

using System;
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;

public class dynamic_demo
{
    static void Main()
    {
        var ipy = Python.CreateRuntime();
        dynamic test = ipy.UseFile("Test.py");
        test.Simple();
    }
}

完整示例 here .

http://blogs.msdn.com/b/charlie/archive/2009/10/25/hosting-ironpython-in-a-c-4-0-program.aspx

关于c# - 如何在 C# 中复制 Python 的排序内置函数的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21054995/

相关文章:

c# - 在 MVC4 Twitter Bootstrap C# 中设置文本框格式

c# - 缓慢迁移公共(public)网站

javascript - 仅从 HighCharts 禁用打印图表选项

python - 如何计算 Scipy 中稀疏矩阵列的方差?

javascript - 如何对触发最少回流的 DOM 元素进行排序?

Javascript 比较时间戳

c# - 将视频分享到Facebook墙

python - 默认类型 .__call__ 是否比调用 __new__ 和 __init__ 做的更多?

python - 用于捕获科学引文的正则表达式

python - python如何比较函数?