Здесь я немного озадачен. Я получаю это исключение, которое говорит мне, что этого ключа не существует. Когда я смотрю на все пары ключ/значение в словаре в окне просмотра, этот ключ находится здесь! Я не думаю, что сойду с ума, но мог бы быть. Я что-то упустил? Вот код:KeyNotFoundException в словаре на C#
public static List<Quote> GetQuoteHistory(int id)
{
List<Quote> quotes = DataAccess.GetQuoteHistory(id);
SetAckCodeDescriptions(quotes);
return quotes;
}
private static void SetAckCodeDescriptions(IEnumerable<Quote> quotes)
{
Dictionary<string, string> ackData = GetAcknowlegementData();
foreach (Quote quote in quotes)
{
quote.AckCodes = GetAckCodeHtml(quote.AckCodes, ackData);
}
}
private static string GetAckCodeHtml(string ackCodes, IDictionary<string, string> ackData)
{
string[] codes = ackCodes.Split(',');
string html = string.Empty;
foreach (string code in codes)
{
html += string.Format("<div title='#= {0} #'>#= {1} #</div>, ", ackData[code], code);
}
return html.TrimEnd(new []{',', ' '}); // remove extra comma and space
}
UPDATE:
public static Dictionary<string, string> GetAcknowlegementData()
{
List<AckData> list = DataAccess.GetAcknowlegementData();
return list.ToDictionary(o => o.AcknowledgementCode, o => o.Description);
}
Можете ли вы разместить код для 'GetAcknowlegementData()'? – rsbarro
Вы уверены, что значение 'code' - это то, что вы ожидаете, когда оно используется в качестве индекса? Возможно, он содержит посторонние символы/пробелы. –
@SteveTownsend достаточно. Я просто подумал, что я что-то упустил. :) –