Parece que não há uma maneira conveniente de fazer isso. Ao contrário de um Dictionary
, List
nã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 oldValue
com 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;
}