Ef core 2个不同的表到同一个dto

Ef core 2 diferent tables to same dto

我正在对 IQueryable 执行 select,所以这个 IQueryable 可以来自 2 个不同的表,但 dto 是相同的。我的问题是我正在复制代码,因为每个代码都有 select。有什么方法可以创建一个通用方法来接收 IQueryable 并在其中执行 select?

你有一个接口:

interface INamed{
  string Name {get; set;}
}

您有两个不同的 table 实体来实现它,因为它们都有一个名称 属性:

public class Person : INamed {
  public string Name { get; set; }
}
public class Company: INamed {
  public string Name { get; set; }
}

你有一个映射方法,它接受任何实现 INamed 的东西并踢出一个名称集的对象:

SomeDto Map(INamed x){
  return new SomeDto { Name = x.Name }
}

并且你适当地称呼它:

context.Persons.Select(person => Map(person) );

context.Companies.Select(company => Map(company) );