我们的数据库中有一些表,这些表在某种意义上是规范化的,即一个表应该从另一个继承字段。
所以,例如:
'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
有没有一种方法可以使用 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<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();
}
关于c# - 动态查询 2 个实体类型并将结果映射回特定实体集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31828661/