, , , . .
-, , , :
Dictionary<string, Item> lookup =
list.ToDictionary(x => x.Code);
:
Item item = lookup["abc012"];
; , , ;
Dictionary<string,string> interner =
new Dictionary<string,string>();
foreach(Item item in list) {
string s, name = item.Name;
if(interner.TryGetValue(name, out s))
item.Name = s;
else
interner.Add(name, name);
}