VB.NET嵌套For循环转LINQ:地址集合转换遇难题
VB.NET嵌套循环转LINQ:处理Person地址集合的方案
先指出原循环代码里的两处逻辑问题:
- 内层遍历地址的循环写错了,应该遍历
personObject.Address而非object.Person.Address DTOObject.Person.Add(data)放在外层循环外,最终只会把最后一个personObject对应的data添加到集合,逻辑错误
以下是修正后的LINQ转换代码,直接在初始化DTOPerson时嵌套处理地址集合:
DTOObject.Person = New List(Of DTOPerson)() If object.Person.Count > 0 Then DTOObject.Person.AddRange( From personObject In object.Person Select New DTOPerson() With { .FirstName = personObject.firstName, .Surname = personObject.surname, .Address = ( From addr In personObject.Address Select New DTOPersonAddress() With {.ID = addr.id} ).ToList() } ) End If
关键说明:
- 用嵌套LINQ查询将
personObject.Address中的每个地址转换为DTOPersonAddress对象,通过.ToList()转为集合后直接赋值给DTOPerson的Address属性 - 借助
AddRange一次性完成所有转换后对象的添加,替代原循环的逐个添加逻辑 - 修正了原循环的逻辑错误,确保每个Person对应的地址都被正确转换并关联
内容的提问来源于stack exchange,提问作者Aiden
相关产品推荐
相关产品推荐

