Проблема здесь в том, что вы пытаетесь использовать значение Int64
в месте, которое принимает тип int/Int32
.Здесь нет неявного преобразования и, следовательно, ошибок компилятора.
Лучший способ исправить это - преобразовать словарь aliases
в тип Int64
.Всегда безопасно преобразовать int
в Int64
, чтобы не допустить потери информации в этом преобразовании.
В идеале вы должны преобразовать GetUrlAliasesByType
, чтобы получить IDictionary<Int64,string>
.Остальная часть системы теперь использует Int64
, поэтому это преобразование имеет смысл.В противном случае вы можете сделать следующее
string alias;
try {
if (aliases.TryGetValue(checked((int)recipe.Id), out alias))
{
recipe.QuickLink = alias;
}
} catch (OverflowException) {
// id not valid
}
Проверенная операция здесь необходима, поскольку она предотвращает из-за тихого переполнения ложное совпадение с TryGetValue