【问题标题】:Get Longest Name获取最长的名字
【发布时间】:2016-05-14 14:19:22
【问题描述】:

我需要名称最长的目录。在 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

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

【问题讨论】:

  • 让我澄清一下,如果我是正确的,您会告诉我...您想在给定以 8000 开头的起始路径的情况下获得最长的目录名称吗?所有子目录呢?
  • 没错。只需忽略子目录。

标签: vb.net linq directoryinfo


【解决方案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()

【讨论】:

  • 带有 DirectoryInfo 的第二个工作正常。谢谢。第一个返回任何错误的内容。它应该返回路径或 DirectoryInfo 不确定哪个。
  • 好的,修复了第一个。确实不需要 GetFileName
【解决方案2】:

我发现了我的错误的原因。 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多