C# 基于序列的排序数组
我正在尝试订购一个C格式的数组。该数组包含美元、欧元、英镑、人民币等货币代码 数组必须按以下优先顺序排序:美元、欧元、英镑、人民币、字母顺序 如何根据该序列进行排序C# 基于序列的排序数组,c#,C#,我正在尝试订购一个C格式的数组。该数组包含美元、欧元、英镑、人民币等货币代码 数组必须按以下优先顺序排序:美元、欧元、英镑、人民币、字母顺序 如何根据该序列进行排序 public class DerivativeTradeDto { public string SettlementCurrencyCode; } 派生Provider.GetRccDerivativeTrades返回类型为的数组 衍生化。结算货币代码包含货币代码 var derivativesTrades = deri
public class DerivativeTradeDto
{
public string SettlementCurrencyCode;
}
派生Provider.GetRccDerivativeTrades返回类型为的数组
衍生化。结算货币代码包含货币代码
var derivativesTrades = derivativeProvider
.GetRccDerivativeTrades(uniqueId, runcContext)
.ToArray();
如果您有一个常量列表要排序 我的方法是
var orderOfPreference = new List<string> { "USD", "EUR", "GBP", "CNY" };
var orderedResults = derivativeTrades.OrderBy(d => {
var index = orderOfPreference.IndexOf(d.SettlementCurrencyCode);
return index == -1 ? int.MaxValue : index;
}).ThenBy(x => x.SettlementCurrencyCode);
返回索引==-1?int.MaxValue:索引将把未包含在OrderOfReference中的放在列表的索引位置之外。然后,BY确保它将按照参考顺序的字母顺序排列所有内容。您可以根据数据的长度更改int.MaxValue我正在尝试的数据,例如OrderBy{USD,EUR},但给出了一个编译错误。这些是字符串吗?数组是自定义类的类型,其字符串成员包含这些值。前四个值和顺序已知,其余按字母顺序排列?实现。在比较器中,按顺序声明包含这四个特殊代码的数组。如果两个代码都在该数组中,则返回它们在数组中位置的比较。如果一个在数组中,而另一个不在数组中,那么只需返回一个负数,以显示数组中的一个位于第一位。如果两个都不在数组中,那么只需返回按字母顺序比较的结果。它会按字母顺序对列表中不在列表中的那些进行排序吗answer@Tom更新了我的答案