我使用第三方服务返回带有状态代码(如Y,N,S,D等)的JSON对象。我想根据状态代码的含义对结果进行排序,这样Y应该出现在N之前,它应该出现在S之前,它应该出现在D之前。在CSharp中实现这一目标的最简单方法是什么?性能并不是最重要的,因为我希望任何给定的请求最多可以获得10个结果。
回复示例:
[ { ..., status: 'Y' },
{ ..., status: 'D' },
{ ..., status: 'N' } ]
我已经使用JSON.NET将这些反序列化为JArray,如果这有助于作为起点。
答案 0 :(得分:3)
我认为最简单的方法是创建一个基于字母检索某种订单键的方法。例如:
public int GetSortKey(string statusCode) {
switch (statusCode) {
case "Y": return 1;
case "N": return 2;
(etc)
}
}
然后通过方法的结果按数组排序。
答案 1 :(得分:2)
您可以创建自定义比较类
public class CustomSorter : IComparer
{
public int Compare(object x, object y)
{
var chars = "YNSD";
if (chars.IndexOf((char)x) < chars.IndexOf((char)y))
return -1;
return chars.IndexOf((char)x) > chars.IndexOf((char)y) ? 1 : 0;
}
}
然后使用新的分拣机
对您拥有的数组进行排序