将.ToHashset结果从(Of Char)转换为(Of String)?

时间:2018-06-13 15:51:34

标签: vb.net linq hashset

我在使用Linq时没有真正的经验,我正在尝试理解.ToHashSet

我正在使用VB。

我有这段代码:

' Import the list of Windows Classes to exclude; one per line.
Dim strRead As String = My.Computer.FileSystem.ReadAllText("C:\Exclude.txt")

' Split the string into a string array
Dim strExcludes As String() = strRead.Split(ControlChars.CrLf.ToCharArray(), StringSplitOptions.RemoveEmptyEntries)

' Convert the String Array to a HashSet (Traditional Method)
Dim lList As New HashSet(Of String)(strExcludes)

这是按预期工作的;我将文本文件中的每一行都放到HashSet中,每行一行。

现在,我想看看如何使用.ToHashSet执行相同操作。下面的代码似乎工作得很好,除了它返回类型<Of Char>,所以我得到它中的每个字符自己的密钥,而不是它自己的密钥中的每一行。

' Convert the String Array to a HashSet (Using System.Linq Method) (Unfinished: Works, but needs to be converted from Char to String)
Dim lListLinq = strRead.ToHashSet()

我用谷歌搜索了一下,并尝试了一下,试图让它返回类型为<Of String>,但没有太多谷歌信息用于.ToHashSet的VB,或者真的很多在C#中关于这个特殊问题。我没有看到转换的位置; .ToHashSet本身也不接受任何论据。

任何人都知道我错过了什么?我觉得这是一件非常简单的滑倒的事情。

1 个答案:

答案 0 :(得分:1)

在字符串上调用ToHashSet()会产生HashSet(Of Char),并且不会在您目击后提供预期结果。

相反,您需要做的是拆分ReadAllText返回的字符串,然后在其上调用ToHashSet()以获得HashSet(Of String)

strRead.Split(ControlChars.CrLf.ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToHashSet()