c# - 动态查询 2 个实体类型并将结果映射回特定实体集

标签 c# linq entity-framework dapper

我们的数据库中有一些表,这些表在某种意义上是规范化的,即一个表应该从另一个继承字段。

所以,例如:

'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/

相关文章:

c# - 将返回表达式的方法引用到另一个方法的语法?

c# - 断言列表中字段的唯一性

c# - linq 查询的等效 lambda 语法

asp.net-mvc - 存储库模式 : One repository class for each entity?

c# - 在 linq 中混合数据库和对象查询并提供分页结果

asp.net-mvc - Laravel PHP 在 ASP.NET MVC 中的等效 Eloquent ORM 用法是什么?

c# - 从类型名称转换为类型作为字符串

c# - 如何反射(reflect)作为泛型提供的类型的名称?

c# - 为什么有些图片用我的功能后歪了?

C# 和 EF 无法将 NULL 插入 Id 列