2011-02-06 20 views
12

¿Cómo puedo editar un elemento de la lista en el código de abajo:Edición de un elemento de una lista <T>

List<Class1> list = new List<Class1>(); 

int count = 0 , index = -1; 
foreach (Class1 s in list) 
{ 
    if (s.Number == textBox6.Text) 
     index = count; // I found a match and I want to edit the item at this index 
    count++; 
} 

list.RemoveAt(index); 
list.Insert(index, new Class1(...)); 
+0

no ha probado nada? –

+0

si está bien! por favor conviértase en linq –

+23

** Debe nombrar sus cuadros de texto **. – SLaks

Respuesta

31

Después de añadir un elemento a una lista, se puede reemplazar por escrito

list[someIndex] = new MyClass(); 

puede modificar un elemento existente en la lista escribiendo

list[someIndex].SomeProperty = someValue; 

EDITAR: Puede escribir

var index = list.FindIndex(c => c.Number == someTextBox.Text); 
list[index] = new SomeClass(...); 
+0

gracias. ¿Cómo es este código para BindingList ? –

+0

Porque hace el método FindLastIndex !! –

1
class1 item = lst[index]; 
item.foo = bar; 
13

No es necesario utilizar LINQ desde List<T> proporciona los métodos para hacer esto:

int index = lst.FindLastIndex(c => c.Number == textBox6.Text); 
if(index != -1) 
{ 
    lst[index] = new Class1() { ... }; 
} 
+0

gracias. ¿Cómo es este código para BindingList ? –

+0

Porque hace el método FindLastIndex !! –

4
public changeAttr(int id) 
{ 
    list.Find(p => p.IdItem == id).FieldToModify = newValueForTheFIeld; 
} 

Con:

  • IdItem es la identificación del elemento que desea para modificar

  • FieldToModify es el campo del elemento que desea actualizar.

  • NewValueForTheField es exactamente eso, el nuevo valor.

(Funciona perfecto para mí, probado e implementado)

+0

Esto debería ser aceptado como respuesta. – Stuart

Cuestiones relacionadas