获得最长的名字

时间:2016-05-14 14:19:22

标签: vb.net linq directoryinfo

我需要名字最长的目录。在RootDir中,可能有几个名称以“8000”开头的目录。我想要名称最长的DirectoryInfo。

{{1}}

我当然得到:“表达式不会产生价值”。如何修复最后一行按长度排序(最长的第一行)并取第一行(最长的)。

2 个答案:

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