我有一个方法的输出,每个结果提供两个关键数据。
例如:20160503
和nzdusd
。
如何将其存储在字典中并对任何一个进行排序? 我希望能够对密钥或值进行排序,但无法通过添加数据! 还有其他更适合的数据结构吗?
之前我尝试过调用Add()
但是收到ArgumentException
消息An item with the same key has already been added.
。
Dictionary<string, string> missingDays = new Dictionary<string, string>();
// Some logic
missingDays.Add(formattedDate, fxPair); // Exception here
foreach (var missingDay in missingDays)
{
Console.WriteLine(missingDay);
}
答案 0 :(得分:3)
字典必须具有唯一键值。在这种情况下,formattedDate
变量被多次分配相同的值,这会在您第二次尝试向具有相同formattedDate
值的字典添加条目时导致异常。
您可以在列表(Tuple<string, string>
)中使用List<Tuple<string, string>>
来存储值,然后使用LINQ方法OrderBy()
对列表进行排序。
var missingDays = new List<Tuple<string, string>>();
missingDays.Add(Tuple.Create("exampleFormattedDate", "exampleFxPair"));
foreach (var missingDay in missingDays.OrderBy(md => md.Item1))
{
Console.WriteLine(missingDay);
}