使用LINQ替换字符串列表

时间:2015-10-27 18:35:59

标签: vb.net linq

我一直在转换代码以使用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

1 个答案:

答案 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