我需要名字最长的目录。在RootDir中,可能有几个名称以“8000”开头的目录。我想要名称最长的DirectoryInfo。
{{1}}
我当然得到:“表达式不会产生价值”。如何修复最后一行按长度排序(最长的第一行)并取第一行(最长的)。
答案 0 :(得分:1)
试试这个(不使用DirectoryInfo)
Dim pCustID As String = "8000"
Dim RootDir As String = CustPdfPath
Dim longest = Directory.GetDirectories(RootDir) _
.Where(Function(x) x.StartsWith(RootDir & "\" & pCustID)) _
.OrderByDescending(Function(x) x.Length) _
.FirstOrDefault()
或使用DirectoryInfo
Dim pCustID As String = "8000"
Dim RootDir As New DirectoryInfo(CustPdfPath)
Dim longest = di.GetDirectories() _
.Where(Function(x) x.Name.StartsWith(pCustID)) _
.OrderByDescending(Function(x) x.Name.Length) _
.FirstOrDefault()
答案 1 :(得分:0)
我发现了我的错误原因。 Array.Sort不会像错误消息那样返回任何内容。相反,它只是对阵列进行排序。然后我就可以得到最后一个。
Dim RootDir As New DirectoryInfo(CustPdfPath)
Dim dirs() As DirectoryInfo
dirs = Array.FindAll(RootDir.GetDirectories, Function(x) x.Name.StartsWith(CustPath))
Array.Sort(RootDir.GetDirectories, _
Function(x As DirectoryInfo, y As DirectoryInfo) x.Name.Length < y.Name.Length)
Dim myDir As DirectoryInfo = dirs.LastOrDefault