【问题标题】:Assigning parameters of one DTO to another将一个 DTO 的参数分配给另一个
【发布时间】:2021-06-22 13:16:50
【问题描述】:

这是将一个 DTO 的参数分配给另一个的代码

List<Projectdto> matchedProjects = new List<Projectdto>();
List<Projectdto> obj1 = new List<Projectdto>();
List<ProjectDTO> obj = matchedProjectsDetails;
Projectdto projectdto = new Projectdto();
for (int i = 0; i < matchedProjectsDetails.Count; i++)
{
    projectdto.Name = obj[i].Name;
    projectdto.PID = obj[i].PID;
    projectdto.PNKC = obj[i].MatchedPNKC;
    projectdto.PNKCCount = obj[i].MatchedPnkcCount;
    obj1.Add(projectdto);                                    
}  

这里,执行for循环后obj1有相同的参数数组,这是怎么回事?

【问题讨论】:

  • Projectdto projectdto = new Projectdto(); 移动到for 循环内。我还要说在这里使用foreach 可以更具可读性。或者甚至更好的是切换到 LINQ。
  • 好的,谢谢。不能使用 foreach,因为两个 DTO 的参数不同。

标签: asp.net object append dto class-library


【解决方案1】:

在循环中移动 Projectdto projectdto = new Projectdto();,此时您只是在更改一项,而不是为循环的每次迭代创建一个新副本:

for (int i = 0; i < matchedProjectsDetails.Count; i++)
{
     Projectdto projectdto = new Projectdto(); 
     projectdto.Name = obj[i].Name;
     projectdto.PID = obj[i].PID;
     projectdto.PNKC = obj[i].MatchedPNKC;
     projectdto.PNKCCount = obj[i].MatchedPnkcCount;
     obj1.Add(projectdto);                                    
 }

【讨论】:

  • 是的,这不会重复实例。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多