Filtración de una lista de objetos basada en propiedades y sus valores.
Buenas tardes,
Estoy construyendo una aplicación básica de consola para aprender cómo filtrar datos de propiedades de una lista de objetos. Estoy intentando filtrar una lista de objetos basándome en la propiedad de objeto seleccionada por el usuario y su valor, pero tengo dificultades para conceptualizar cómo conectar la entrada del usuario con la propiedad del objeto, ya que las propiedades no tienen un índice.
Por ejemplo, si tenemos una lista de coches y el usuario selecciona filtrar por año e ingresa un año específico, deberíamos devolver esos coches.
foreach(var car in listOfCars)
{
if(…)
{
Console.WriteLine(car.Name);
Console.WriteLine(car.Year);
}
}
Puedo filtrar los datos usando caracteres comodín, pero ¿cómo se conecta un número de entrada seleccionado por el usuario con una propiedad?
davy.ai
Una forma de conectar la entrada seleccionada por el usuario a una propiedad es creando una declaración switch-case que coincida con la entrada del usuario con la propiedad. Aquí tienes un ejemplo:
En este ejemplo, primero preguntamos al usuario por la propiedad por la que le gustaría filtrar y almacenamos su entrada en
userChoice
. Luego utilizamos una declaración switch-case para que coincida su entrada con el nombre de propiedad correspondiente y lo almacenamos enpropertyToFilter
.A continuación, pedimos al usuario el valor por el que le gustaría filtrar y lo almacenamos en
valueToFilter
. Luego recorremos la lista de coches (listOfCars
) y utilizamos reflexión para obtener el valor depropertyToFilter
para cada coche. Convertimos este valor a una cadena y comprobamos si contiene elvalueToFilter
. Si es así, imprimimos el nombre y el año del coche.Esta es solo una posible implementación, pero debería darte una idea de cómo conectar la entrada del usuario a una propiedad del objeto para filtrar.