如何有效检查一条路径是否是 C# 中另一条路径的子路径?

use*_*594 5 .net c# windows path

我试图确定一条路径是否是另一条路径的子路径。

我已经尝试过:

if (Path.GetFullPath(A).StartsWith(Path.GetFullPath(B)) ||
    Path.GetFullPath(B).StartsWith(Path.GetFullPath(A)))
   { /* ... do your magic ... */ }
Run Code Online (Sandbox Code Playgroud)

就像如何检查一条路径是否是另一条路径的子路径? 邮政

但它不起作用。例如,如果我写 "C:\files" 和 "C:\files baaa" 代码认为 "C:\files baaa" 是 "C:\files" 的孩子,如果不是,它是只有 C:。当我尝试长路径时,问题真的很严重,有很多孩子。

我也试过“如果包含\”......但仍然没有真正在所有的追逐中工作

我能做什么?

谢谢!

Dmi*_*try 6

尝试这个:

if (!Path.GetFullPath(A).TrimEnd(Path.DirectorySeparatorChar).Equals(Path.GetFullPath(B).TrimEnd(Path.DirectorySeparatorChar), StringComparison.CurrentCultureIgnoreCase)
    && (Path.GetFullPath(A).StartsWith(Path.GetFullPath(B) + Path.DirectorySeparatorChar, StringComparison.CurrentCultureIgnoreCase)
    || Path.GetFullPath(B).StartsWith(Path.GetFullPath(A) + Path.DirectorySeparatorChar, StringComparison.CurrentCultureIgnoreCase)))
   { /* ... do your magic ... */ }
Run Code Online (Sandbox Code Playgroud)