109 votes

Comment mettre à jour un objet dans une liste<> en C#

J'ai un List<> d'objets personnalisés.

J'ai besoin de trouver un objet dans cette liste par une propriété unique et de mettre à jour une autre propriété de cet objet.

Quelle est la manière la plus rapide de le faire ?

136voto

Carsten König Points 14720

Utiliser Linq pour trouver l'objet que vous pouvez faire :

 var obj = myList.FirstOrDefault(x => x.MyProperty == myValue);
if (obj != null) obj.OtherProperty = newValue;

Mais dans ce cas, vous voudrez peut-être enregistrer la liste dans un dictionnaire et l'utiliser à la place :

 // ... define after getting the List/Enumerable/whatever
var dict = myList.ToDictionary(x => x.MyProperty);
// ... somewhere in code
MyObject found;
if (dict.TryGetValue(myValue, out found)) found.OtherProperty = newValue;

22voto

Erix Points 3705

ou sans lien

 foreach(MyObject obj in myList)
{
   if(obj.prop == someValue)
   {
     obj.otherProp = newValue;
     break;
   }
}

14voto

B JP Points 832

Peut aussi essayer.

  _lstProductDetail.Where(S => S.ProductID == "")
        .Select(S => { S.ProductPcs = "Update Value" ; return S; }).ToList();

6voto

codeMonkey Points 1204
var itemIndex = listObject.FindIndex(x => x == SomeSpecialCondition());
var item = listObject.ElementAt(itemIndex);
item.SomePropYouWantToChange = "yourNewValue";

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X