動態查詢2個實體類型並將結果映射回特定實體集

c# dapper entity-framework linq

我們在數據庫中有表格,這些表格在一個應該從另一個繼承字段的意義上進行了規範化。

所以,例如:

'Vehicle' fields:
 - SpecificType
 - SerialNumber

'Car' fields:
 - FuelType

'Boat' fields:
 - HullSize

如果用戶在SerialNumber和FuelType上搜索,我知道我需要返回一輛Car,但我不想分兩步執行搜索:

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

有沒有辦法用Linq寫一個可以給我想要的結果的泛型方法?

我看了Dapper框架作為動態建立標準的一種方法,但我不確定是否有更好的方法(練習),我想看看還有其他選擇。

熱門答案

我希望這可以幫到你

要按燃料類型搜索所有汽車,請使用:

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

如果您還想通過SerialNumber過濾使用:

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


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因