Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态查询2个实体类型并将结果映射回特定实体集_C#_Linq_Entity Framework_Dapper - Fatal编程技术网

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