【问题标题】:How do I find greater number folder from root folder path using c#?如何使用 c# 从根文件夹路径中找到更大数量的文件夹?
【发布时间】:2016-05-04 02:17:20
【问题描述】:

我在 Controllers 文件夹 z1z2z3 中有 3 个文件夹

我如何比较并找出z3 在所有列出的文件夹中更大?

这段代码会给我文件夹深度。

public static int FolderDepth(string path)
    {
        if (string.IsNullOrEmpty(path))
            return 0;
        DirectoryInfo parent = Directory.GetParent(path);
        if (parent == null)
            return 1;
        return FolderDepth(parent.FullName) + 1;
    }

greater 的意思是 3 大于 2 &1 所以 z3 更大。 输出应该是 z3

【问题讨论】:

  • 更大是什么意思?尺寸更大,包含更多物品,名称顺序?
  • 为什么要使用 3.0 和 4.0 标签?
  • 更大意味着name 中的3 大于2 &1 所以z3 更大。输出应该是z3
  • 所以基本上你想要一个目录作为输入,并且你想看看这个目录是否比输入目录旁边的所有其他目录更大(按名称排序)?
  • 是的,你来了。就像我会给出像C:\mydata\Controllers 这样的文件夹路径,现在将检查该路径内的所有文件夹并按名称检查z4 是否存在可怕的输出,输出为z4

标签: c# .net c#-4.0 directory c#-3.0


【解决方案1】:

不太确定这是否是您想要的,但我试了一下:

public bool DirectoryIsGreatest(string directoryPath)
{
  if (string.IsNullOrEmpty(path))
    return false;
  var parent = Directory.GetParent(directoryPath);
  if (parent == null)
    return false;
  var directoriesToCheck = Directory.GetDirectories(parent.FullName).ToList();
  directoriesToCheck.Sort();
  return directoriesToCheck[directoriesToCheck.Count - 1] == directoryPath;  
}

【讨论】:

    【解决方案2】:
    var directory = Directory.GetDirectories(path)
                             .OrderByDescending(dir => dir)
                             .FirstOrDefault();
    

    现在,您可能还有另一个问题。什么应该是“更大”,z15z2?计算机如何发现?您的文件夹是否遵循某种模式?

    【讨论】:

    • @Neo 这是 OrderByDescending 方法的语法。您在集合中获得了一件物品,您需要退回您想要订购的物品。因为我想按集合中的项目排序,所以我返回传递的变量。
    猜你喜欢
    • 2010-12-25
    • 1970-01-01
    • 2014-03-13
    • 2010-10-14
    • 2018-11-15
    • 1970-01-01
    • 2012-01-27
    • 2011-06-01
    • 1970-01-01
    相关资源
    最近更新 更多