C#根据特定值排序的数据结构

时间:2016-07-29 02:28:43

标签: c# dictionary

我有一个方法的输出,每个结果提供两个关键数据。 例如:20160503nzdusd

如何将其存储在字典中并对任何一个进行排序? 我希望能够对密钥或值进行排序,但无法通过添加数据! 还有其他更适合的数据结构吗?

之前我尝试过调用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);
                }

1 个答案:

答案 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);
}