我正在使用我的Map
方法从上下文类DTO
创建Company
对象,它看起来像这样:
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
HasChildrens
属性,所以我必须以某种方式填充它,而在映射其他道具的地方无法这样做,因为在那里我无法访问公司列表。
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)});
但仍然有问题..
基本上,我只是想为每个映射的HasChildrens
添加DTO
并返回它因为它是在Map方法中添加的。
任何帮助都会很棒!
谢谢
您的方法private IEnumerable<CompDTO> Map(IEnumerable<Company> companies)
的返回类型为IEnumerable<CompDTO>