我要排序,可以包含不同的数值类型(双,浮点等等)的阵列此代码引发一个System.ArgumentException(“值不是System.Single”)错误:如何排序异构数字的动态数组? 。
new dynamic[] { 5L, 4D, 3F, 2U, 1M, 0UL }.ToList().Sort();
我知道我可以使用LINQ来做到这一点:
new dynamic[] { 5L, 4D, 3F, 2U, 1M, 0UL }.ToList().OrderBy(x => (decimal)x).ToArray();
但是有没有不涉及通过任何有施放的每个元素会更快的方法?
附录:我也希望能够处理列表中的空值,所以即使LINQ查询的投射也无济于事。
最终,为了比较两个数字,它们必须是兼容的类型。我不确定你可以绕过这个限制。每种类型使用'IComparable.CompareTo(object)'实现会更糟糕,因为每个调用都需要装箱参数。 – cdhowie 2013-04-26 19:36:40
为什么你有一组不同的数字开始? – Stilgar 2013-04-26 19:42:06
Stilgar:我使用JSON.NET的动态加载从JSON文件加载它们,这似乎将数字转换为双精度或整数,具体取决于它们是否有小数点。 – 2013-04-26 20:04:57