К сожалению, это не так просто, как StartsWith
.
Вот лучший ответ, адаптированный из этого дублирующего вопроса.Я сделал это методом расширения для простоты использования.Также использование грубой силы catch
, так как практически любой метод, который обращается к файловой системе, может завершиться сбоем в зависимости от прав пользователя.
public static bool IsSubDirectoryOf(this string candidate, string other)
{
var isChild = false;
try
{
var candidateInfo = new DirectoryInfo(candidate);
var otherInfo = new DirectoryInfo(other);
while (candidateInfo.Parent != null)
{
if (candidateInfo.Parent.FullName == otherInfo.FullName)
{
isChild = true;
break;
}
else candidateInfo = candidateInfo.Parent;
}
}
catch (Exception error)
{
var message = String.Format("Unable to check directories {0} and {1}: {2}", candidate, other, error);
Trace.WriteLine(message);
}
return isChild;
}