Чтобы получить анонимный тип, вам нужно либо использовать отражение, либо приведение примера , но в этом случае ни одна из них не является хорошей идеей.
Вместо этого либо создайтеваш собственный пользовательский тип для хранения данных или используйте один из встроенных типов Tuple
:
// dict will be a Dictionary<TId, Tuple<TColumn, TLocalized>>
// where TId, TColumn and TLocalized are the actual types of those properties
var dict = sourceSequence.ToDictionary(e => e.Id,
e => Tuple.Create(e.Column, e.Localized));
Cache["yourCacheKey"] = dict;
Затем, когда вы получите объект из кэша, просто приведите его ксоответствующий Tuple
тип:
// i'm assuming here that Id is Int32, Column is String, and Localized is Boolean
var dict = (Dictionary<int, Tuple<string, bool>>)Cache["yourCacheKey"];