Перечислимые расширения - ваш друг (являются * вашими друзьями ?:)
var groups = lists.GroupBy(item => new { item.code1, item.code2 });
И .... легендарный хитовый пост Skeet, до того как я это сделал, ПОЗОР!
Времяодин скит (ха, верно).Вы также можете группировать ваши общие элементы в словаре.
var mapping = list
.GroupBy(item => new { item.code1, item.code2 })
.ToDictionary(g => g.Key, g => g.ToList());
Теперь отображение - Dictionary<anon{code1, code2}, List<YourObject>>
.Конечно, вы можете оставить ToList для значения, а типом значения словаря будет IGrouping, который является IEnumerable.
Вы также можете использовать ToLookup
var lookup = list.ToLookup(item => new { item.code1, item.code2 });
.Результатом является ILookup, который имеет ключ данного типа ключа и является IEnumerable используемого типа списка.Это не словарь, но может использоваться аналогично.