我一直在转换代码以使用LINQ查询,并遇到了我无法弄清楚的事情(LINQ的超级新手)。
我有一个自定义对象" maindata",它包含标题的字符串列表,它还包含一个文件列表(另一个自定义对象),并且在该对象中是另一个标题字符串列表。
我基本上需要在不同的时间做两件不同的事情
1)在maindata.file(1).headers.replace(" x"," y")(确切的100%匹配,我知道我不能.replace由于它是一个字符串列表)
2)在maindata.headers.replace(" x"," y"),以及maindata.file(all).headers.replace(" x& #34;," y")(再次确切地说是100%匹配)
我已经使用LINQ做了一些基本的布尔检查,但这超出了我所触及的范围,任何帮助都会受到赞赏。
vb.net中的编码
For I As Integer = 0 To MainData.HeaderName.Count - 1
If MainData.HeaderName(I) = OldHeader Then
MainData.HeaderName(I) = NewHeader
End If
Next
For I As Integer = 0 To MainData.Files.Count - 1
For J As Integer = 0 To MainData.Files(I).CurrentHeaders.Count - 1
If MainData.Files(I).CurrentHeaders(J) = OldHeader Then
MainData.Files(I).CurrentHeaders(J) = NewHeader
End If
Next
Next
For I As Integer = 0 To SelectedFile.CurrentHeaders.Count - 1
If SelectedFile.CurrentHeaders(I) = OldHeader Then
SelectedFile.CurrentHeaders(I) = NewHeader
End If
Next
答案 0 :(得分:0)
由于一个原因,Linq不会在这里提供帮助。您正在修改集合中的值。如果它们是您想要更新属性的引用类型的集合,那么您可以循环它们并更新属性,但由于它们是值类型的集合,因此您拥有< / em>使用For
循环进行更新。
仅我可以看到非常小的改进的地方是将For
循环设为For Each
循环:
For Each file in MainData.Files
For J As Integer = 0 To file.CurrentHeaders.Count - 1
If file.CurrentHeaders(J) = OldHeader Then
file.CurrentHeaders(J) = NewHeader
End If
Next
Next