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(...));
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(...);
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() { ... };
}
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)
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;
class1 item = lst[index];
item.foo = bar;