update una property lista eliminar elementos all agregar c# generic-list

una - update property in list c#



La mejor manera de actualizar un elemento en una lista genérica (3)

Podrías hacerlo:

var matchingDog = AllDogs.FirstOrDefault(dog => dog.Id == "2"));

Esto devolverá el perro correspondiente, de lo contrario, se devolverá null .

A continuación, puede establecer la propiedad de la siguiente manera:

if (matchingDog != null) matchingDog.Name = "New Dog Name";

Esta pregunta ya tiene una respuesta aquí:

Supongamos que tenemos una clase llamada Perro con dos cadenas "Nombre" e "Id". Ahora supongamos que tenemos una lista con 4 perros en ella. Si quisieras cambiar el nombre del Perro con la "Id" de "2", ¿cuál sería la mejor manera de hacerlo?

Dog d1 = new Dog("Fluffy", "1"); Dog d2 = new Dog("Rex", "2"); Dog d3 = new Dog("Luna", "3"); Dog d4 = new Dog("Willie", "4"); List<Dog> AllDogs = new List<Dog>() AllDogs.Add(d1); AllDogs.Add(d2); AllDogs.Add(d3); AllDogs.Add(d4);


Si la lista está ordenada (como sucede en el ejemplo), una búsqueda binaria en el índice ciertamente funciona.

public static Dog Find(List<Dog> AllDogs, string Id) { int p = 0; int n = AllDogs.Count; while (true) { int m = (n + p) / 2; Dog d = AllDogs[m]; int r = string.Compare(Id, d.Id); if (r == 0) return d; if (m == p) return null; if (r < 0) n = m; if (r > 0) p = m; } }

No estoy seguro de cuál sería la versión LINQ de esto.


AllDogs.First(d => d.Id == "2").Name = "some value";

Sin embargo, una versión más segura de esto podría ser esta:

var dog = AllDogs.FirstOrDefault(d => d.Id == "2"); if (dog != null) { dog.Name = "some value"; }