我正在选择一个IQueryable,所以这个IQueryaable可以来自两个不同的表,但dto是相同的。我的问题是,我正在复制代码,因为每个代码都有select。有没有办法创建一个通用方法来接收IQueryable并在其中进行选择?
您有一个接口:
interface INamed{
string Name {get; set;}
}
您有两个不同的表实体来实现它,因为它们都有一个Name属性:
public class Person : INamed {
public string Name { get; set; }
}
public class Company: INamed {
public string Name { get; set; }
}
您有一个映射方法,它接受任何实现INamed的对象,并踢出Name集为的对象
SomeDto Map(INamed x){
return new SomeDto { Name = x.Name }
}
你可以恰当地称之为:
context.Persons.Select(person => Map(person) );
context.Companies.Select(company => Map(company) );