我有实体类:
public class Company
{
public int Id {get;set;}
public string Name {get;set;}
public int PrivateNumber {get;set;}
public DateTime Created {get;set;}
public DateTime? LastModified {get;set;}
}
我有DTO课程:
public class CompanyDTO
{
public int Id {get;set;}
public string Name {get;set;}
public int PrivateNumber {get;set;}
}
对于普通用户,我正在使用投影:
Expression<Func<Company, CompanyDTO>> proj1 = x => new CompanyDTO {
Id = x.Id,
Name = x.Name
};
对于高级用户,我也希望获得私人号码,因此我定义了第二个投影
Expression<Func<Company, CompanyDTO>> proj2 = x => new CompanyDTO {
PrivateNumber = x.PrivateNumber
};
在第一个场景中,我写了这样的东西:
CompanyDTO dto = ctx.Companies.Where(x => x.Id == id).Select(proj1).FirstOrDefault();
对于第二种情况,我想用proj2中定义的内容扩展我的proj1,以便我可以将上面的查询改进为:
CompanyDTO dto = ctx.Companies.Where(x => x.Id == id).Select(proj).FirstOrDefault();
proj是:
这是可行的吗?如果是,那该怎么办?