¿Cómo encontrar un objeto de clase en una List <T> por uno o más campos de clase? [duplicar]
Tengo este codigo:
class Garage
{
private List <Car> cars;
public void AddCar (string carModel, string color, double speed, int yearOfIssue)
{
Car car = new Car (carModel, color, speed, yearOfIssue);
cars.Add (car);
}
public void DeleteCar (string carModel, string color, double speed, int yearOfIssue)
{
}
}
class Car
{
public Car ()
{
}
public Car (string carModel, string color, double speed, int yearOfIssue)
{
this.carModel = carModel;
this.color = color;
this.speed = speed;
this.yearOfIssue = yearOfIssue;
}
private string carModel;
private string color;
private double speed;
private int yearOfIssue;
}
En la clase Garage, necesito implementar el método DeleteCar. Entonces, cuando el método está llamando, el usuario ingresa los 4 campos o algunos de ellos, y luego de eso el objeto en la Lista será ubicado y eliminado, ¿cómo se puede implementar y con qué ayuda?
Respuestas
xtadex
Para eliminar se puede utilizar el método RemoveAll ():
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.removeall?view=netcore-3.1
public void DeleteCar (string carModel, string color, double speed, int yearOfIssue)
{
cars.RemoveAll(c =>
c.carModel == carModel &&
c.color == color&&
c.speed == speed&&
c.yearOfIssue == yearOfIssue);
}
o
class Car
{
public bool Equals(Car other)
{
return other.carModel == carModel &&
other.color == color&&
other.speed == speed&&
other.yearOfIssue == yearOfIssue;
}
}
public void DeleteCar (string carModel, string color, double speed, int yearOfIssue)
{
Car car = new Car (carModel, color, speed, yearOfIssue);
cars.RemoveAll(c => c.Equals(car));
}