基本上,我有一个ComboBox
,我希望从特定的File Extensions
填充Directory
。
目前,我正在使用:
Dim dir = "C:\"
For Each file As String In System.IO.Directory.GetFiles(dir)
cmb_FileTypes.Items.Add(System.IO.Path.GetExtension(file))
Next
这不能正常工作,因为它基本上加载了目录中所有文件的所有扩展名。我想要它,以便它显示每个文件类型。例如,如果有10个文件:
在这10个文件中,有6个文件扩展名是不同的文件扩展名:
如何将每个1个这些文件扩展名加载到ComboBox而不是重复它?
答案 0 :(得分:2)
使用LINQ
在一个批量中添加组合框的所有扩展名。
cmb_FileTypes.Items.AddRange((From name In Directory.GetFiles(dir) Select Path.GetExtension(name).Replace(".", "") Distinct).ToArray())
答案 1 :(得分:1)
您可以使用LINQ对扩展程序进行分组
For Each file As String In Directory.GetFiles(dir).[Select](Function(p) Path.GetExtension(p)).Distinct().OrderBy(Function(p) p).ToList()
cmb_FileTypes.Items.Add(System.IO.Path.GetExtension(file))
Next
或者您可以创建一个返回包含唯一扩展名的List<string>
的方法。
Public Function UniqueExtensions(filenames As String()) As List(Of String)
Dim extSet As New HashSet(Of String)(StringComparer.OrdinalIgnoreCase)
For Each file As String In filenames
extSet.Add(System.IO.Path.GetExtension(file))
Next
Return extSet.ToList()
End Function