C# 动态查询2个实体类型并将结果映射回特定实体集
我们的数据库中有一些表,这些表在某种意义上是规范化的,即一个表应该从另一个表继承字段 例如:C# 动态查询2个实体类型并将结果映射回特定实体集,c#,linq,entity-framework,dapper,C#,Linq,Entity Framework,Dapper,我们的数据库中有一些表,这些表在某种意义上是规范化的,即一个表应该从另一个表继承字段 例如: 'Vehicle' fields: - SpecificType - SerialNumber 'Car' fields: - FuelType 'Boat' fields: - HullSize 如果用户搜索SerialNumber和FuelType,我知道我需要返回一辆车,但我不想分两步执行搜索: 1. List<Vehicles> SearchVehicles( ser
'Vehicle' fields:
- SpecificType
- SerialNumber
'Car' fields:
- FuelType
'Boat' fields:
- HullSize
如果用户搜索SerialNumber和FuelType,我知道我需要返回一辆车,但我不想分两步执行搜索:
1. List<Vehicles> SearchVehicles( serialNumber )
2. List<Cars> SearchCars(List<Vehicles>, FuelType) // From the list of Vehicles, query all Cars with specified FuelType
1。车辆列表(序列号)
2.List SearchCars(List,FuelType)//从车辆列表中,查询具有指定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();
}
private static List SearchCars(列出车辆、燃料类型燃料类型)
{
返回车辆。其中(f=>f为汽车和(f为汽车)。燃料类型==燃料类型)
.选择(x=>(汽车)x).ToList();
}
如果您还想按SerialNumber进行筛选
使用:
private static List SearchCars(列出车辆、燃料类型、字符串序列号)
{
返回车辆。其中(f=>f.SerialNumber==SerialNumber&&f是汽车
&&(作为汽车)。燃料类型==燃料类型)
.选择(x=>(汽车)x).ToList();
}
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();
}