获取最长的名字
Get Longest Name
我需要名字最长的目录。在 RootDir 中可能有几个名称以“8000”开头的目录。我想要名字最长的那个的DirectoryInfo。
Dim pCustID As String = "8000"
Dim RootDir As New DirectoryInfo(CustPdfPath)
Dim dirs() As DirectoryInfo
dirs = Array.FindAll(RootDir.GetDirectories, Function(x) x.Name.StartsWith(pCustID))
Dim myDir As DirectoryInfo = Array.Sort(RootDir.GetDirectories, _
Function(x As DirectoryInfo, y As DirectoryInfo) _
x.Name.Length > y.Name.Length).firstordefault
我当然得到:"Expressions does not produce a value"。如何修复最后一行以按长度排序(最长在前)并取第一个(最长)。
让我们试试这个(不使用 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()
我发现了错误的原因。 Array.Sort 没有 return 任何像错误消息所说的那样。相反,它只是就地对数组进行排序。那我只能拿最后一个了
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
我需要名字最长的目录。在 RootDir 中可能有几个名称以“8000”开头的目录。我想要名字最长的那个的DirectoryInfo。
Dim pCustID As String = "8000"
Dim RootDir As New DirectoryInfo(CustPdfPath)
Dim dirs() As DirectoryInfo
dirs = Array.FindAll(RootDir.GetDirectories, Function(x) x.Name.StartsWith(pCustID))
Dim myDir As DirectoryInfo = Array.Sort(RootDir.GetDirectories, _
Function(x As DirectoryInfo, y As DirectoryInfo) _
x.Name.Length > y.Name.Length).firstordefault
我当然得到:"Expressions does not produce a value"。如何修复最后一行以按长度排序(最长在前)并取第一个(最长)。
让我们试试这个(不使用 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()
我发现了错误的原因。 Array.Sort 没有 return 任何像错误消息所说的那样。相反,它只是就地对数组进行排序。那我只能拿最后一个了
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