Consulta dinámica de 2 tipos de entidades y resultados de mapeo en un conjunto de entidades específico

c# dapper entity-framework linq

Pregunta

Tenemos tablas en nuestra base de datos que están normalizadas en el sentido de que una debe heredar campos de la otra.

Así por ejemplo:

'Vehicle' fields:
 - SpecificType
 - SerialNumber

'Car' fields:
 - FuelType

'Boat' fields:
 - HullSize

Si el usuario buscó en SerialNumber y FuelType, sé que debo devolver un automóvil, pero no deseo ejecutar la búsqueda en dos pasos:

 1. List<Vehicles> SearchVehicles( serialNumber )
 2. List<Cars> SearchCars(List<Vehicles>, FuelType) // From the list of Vehicles, query all Cars with specified FuelType

¿Hay alguna manera de escribir un método genérico usando Linq que pueda darme el resultado deseado?

Miré el marco de Dapper como un medio para construir dinámicamente los criterios, pero no estoy seguro de si hay una mejor manera (práctica), y me gustaría ver qué otras opciones hay.

Respuesta popular

espero que esto pueda ayudarte

Para buscar todos los automóviles por tipo de combustible, use:

private static List<Car> SearchCars(List<Vehicle> vehicles, FuelType fueltype)
{
   return vehicles.Where(f =>f is Car && (f as Car).FuelType == fueltype) 
          .Select(x => (Car)x).ToList();
}

Si también desea filtrar por Número de serie, utilice:

private static List<Car> SearchCars(List<Vehicle> vehicles, FuelType fueltype,          string serialnumber)
 {
   return vehicles.Where(f =>f.SerialNumber==serialnumber && f is Car 
                         && (f as Car).FuelType == fueltype)
                  .Select(x => (Car)x).ToList();
 }


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué