是否可以在EF查询中填充List?我的DTO如下:
public DTO()
{
public string ClientName { get; set;}
public List<string> RelatedCodes { get; set;}
}
填充DTO =
的方法Public DTO MyResult(string ClientCode)
{
return (from o in repository.RelatedClient
where o.LeadCode == ClientCode
select new DTO { ClientName = o.ClientName, RelatedCodes = o.RelatedCodes.ToList()});
}
我知道我不应该在查询中添加ToList(),或者如果我可以做错了。任何人都可以建议如何做到这一点。我的DTO被缩减为这个例子,但我希望有很多单个属性和List&lt;&gt;如果可能,DTO中的(或多个列表)具有一个实体查询?
所以下面的答案我认为没有办法直接查询这个。我最初的选择是:
Public DTO MyResult(string ClientCode)
{
var temp = (from o in repositry.RelatedCode Where o.LeadCode == ClientCode select o).ToList();
DTO dto = (from o in repository.LeadClient Where o.LeadCode == ClientCode Select o.ClientName).Firstordefault();
foreach(string rc in temp)
{ dto.RelatedCode.Add(rc);}
return dto;
}
我对此感到满意,但如果有人能告知这是否是没有像automapper这样的交易的正确方法,我将不胜感激。我正在尝试学习实体框架,并希望检查我没有错过一些内置功能。</ p>
答案 0 :(得分:3)
类似的东西:
var dtoEntity = repo.RelatedClient.SingleOrDefault(x => x.LeadCode == ClodeCode);
DTO d = new DTO();
d.ClientName = dtoEntity.ClientName;
foreach (var relatedCode in dtoEntity.RelatedCodes)
{
d.RelatedCodes.Add(relatedCode);
}
return d;
使用此方法,您可以添加任意数量的属性。但是,我建议使用AutoMapper。
在这里阅读更多内容: