动态查询2种实体类型,并将结果映射回特定的实体集
本文关键字:实体 映射 结果 2种 查询 类型 动态 | 更新日期: 2023-09-27 18:06:31
我们的数据库中有一些表是标准化的,即一个表应该继承另一个表的字段。
例如:
'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();
}