2016-07-29 4 views
1

У меня есть выход метода, который предоставляет два ключевых фрагмента данных для каждого результата. Например: 20160503 и nzdusd.C# Структура данных для сортировки по отношению к определенным значениям

Как сохранить это в словаре и сортировке против одного? Я хочу, чтобы иметь возможность сортировать против ключа или значения, но не может пройти мимо добавления данных! Есть ли другая структура данных, которая лучше подходит?

Раньше я пытался просто вызвать 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); 
       } 

ответ

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); 
} 
Смежные вопросы