web-dev-qa-db-fra.com

Modification d'un élément dans une liste <T>

Comment modifier un élément de la liste dans le code ci-dessous:

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(...));
19
mah_85

Après avoir ajouté un élément à une liste, vous pouvez le remplacer en écrivant

list[someIndex] = new MyClass();

Vous pouvez modifier un élément existant dans la liste en écrivant

list[someIndex].SomeProperty = someValue;

MODIFIER : vous pouvez écrire

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

Vous n'avez pas besoin d'utiliser linq depuis List<T> fournit les méthodes pour ce faire:

int index = lst.FindLastIndex(c => c.Number == textBox6.Text);
if(index != -1)
{
    lst[index] = new Class1() { ... };
}
14
Lee
public changeAttr(int id)
{
    list.Find(p => p.IdItem == id).FieldToModify = newValueForTheFIeld;
}

Avec:

  • IdItem est l'id de l'élément que vous souhaitez modifier

  • FieldToModify est le champ de l'élément que vous souhaitez mettre à jour.

  • NewValueForTheField est exactement cela, la nouvelle valeur.

(Cela fonctionne parfaitement pour moi, testé et mis en œuvre)

7
user3570113
  1. Vous pouvez utiliser la méthode FindIndex () pour rechercher l'index de l'élément.
  2. Créez un nouvel élément de liste.
  3. Remplacez l'élément indexé par le nouvel élément.

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

int index = list.FindIndex(item => item.Number == textBox6.Text);

Class1 newItem = new Class1();
newItem.Prob1 = "SomeValue";

list[index] = newItem;
4
Marcus
class1 item = lst[index];
item.foo = bar;
3
Itay Karo