Substitua um item em uma lista

Parece que não há uma maneira conveniente de fazer isso. Ao contrário de um Dictionary, Listnão tem nenhuma chave para fazer referência. A única maneira de substituir um item em uma lista é usando seu índice:

int index = listofelements.IndexOf(oldValue);
if(index != -1) listofelements[index] = newValue;

Isso exige que localizemos o oldValuecom nossa chave. Aqui está um exemplo. Um método para adicionar um contato por sua posição:

private static void ReplaceContact(IList<LhdContact> contacts, LhdContact newContact)
{
var oldContact =
contacts
.FirstOrDefault(c => c.Type.Equals(newContact.Type, StringComparison.OrdinalIgnoreCase));
var index = contacts.IndexOf(oldContact);
if (index != -1) contacts[index] = newContact;
}