Interrogation dynamique de 2 types d'entités et retour des résultats dans un ensemble d'entités spécifique

c# dapper entity-framework linq

Question

Nous avons des tables dans notre base de données qui sont normalisées dans le sens où l’un doit hériter des champs de l’autre.

Donc, par exemple:

'Vehicle' fields:
 - SpecificType
 - SerialNumber

'Car' fields:
 - FuelType

'Boat' fields:
 - HullSize

Si l'utilisateur a effectué une recherche sur SerialNumber et FuelType, je sais que je dois renvoyer une voiture, mais je ne souhaite pas exécuter la recherche en deux étapes:

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

Est-il possible d'écrire une méthode générique utilisant Linq qui pourrait me donner le résultat souhaité?

J'ai regardé le framework Dapper comme un moyen de construire dynamiquement des critères, mais je ne suis pas sûr qu'il y ait un meilleur moyen (pratique), et j'aimerais voir quelles sont les autres options.

Réponse populaire

J'espère que ceci peut vous aider

Pour rechercher toutes les voitures par type de carburant, utilisez:

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 vous souhaitez également filtrer par numéro de série Utilisez:

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();
 }



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi