【发布时间】:2019-10-06 09:41:00
【问题描述】:
我正在使用我的Map 方法从我的上下文类Company 创建DTO 对象,它看起来像这样:
private CompDTO Map(Company company)
{
return new CompDTO()
{
Id = company.Id,
Title = company.Title,
ParentCompanyId = company.ParentCompanyId,
};
}
CompDTO 看起来像这样:
public class CompDTO
{
public long Id { get; set; }
public string Title { get; set; }
public long? ParentCompanyId { get; set; }
public bool HasChildrens { get; set; }
}
我正在这样使用它,基本上接收公司列表并调用另一个 Map 方法,该方法将从我的公司对象创建 DTO 对象,对我来说主要问题是 Company 类 does not contain @987654331 @property,所以我必须以某种方式填充它,而我无法在映射其他道具的地方执行此操作,因为我无法访问公司列表。
private IEnumerable<CompDTO> Map(IEnumerable<Company> companies)
{
// Mapping all properties except HasChildrens because it does not exist in Company object so I decided to map it later
var result = companies.Select(c => Map(c));
// Here I wanted to return all previously mapped objects + I would like to add to each object HasChildren property, but obliviously my syntax is not good:
return result.Select(c => new { c, c.HasChildrens = companies.Any(cc => cc.ParentCompanyId == c.Id) });
}
我正在检索错误:无效的匿名类型声明符。
我也尝试过像这样添加 HasChildrens:
return result.Select(c => {c.HasChildrens = companies.Any(cc => cc.ParentCompanyId == c.Id)});
但还是有问题..
基本上,我只想为每个映射的DTO 添加HasChildrens 并返回它因为它是在 Map 方法中添加的。
任何形式的帮助都会很棒!
谢谢
【问题讨论】:
标签: c# linq ienumerable dto