например, myfunc (от: c: \ my \ dir до: c: \ my \ other \ file.ext) ==> .. \ other \ file.ext.
newUri () не нужно применять, если только не существует способа вернуть формат URI, а не формат имени файла Windows.Ошибка .LocalPath.
Это должно делать то, что вы хотите.
string firstDirectory = "c:\\my\\dir"; string secondDirectory = "c:\\my\\other\\file.ext"; var first = firstDirectory.Split('\\'); var second = secondDirectory.Split('\\'); var directoriesToGoBack = first.Except(second); var directoriesToGoForward = second.Except(first); StringBuilder directory = new StringBuilder(); bool initial = true; foreach (string s in directoriesToGoBack) { if (initial) { initial = false; } else { directory.Append('\\'); } directory.Append(".."); } foreach (string s in directoriesToGoForward) { directory.Append('\\'); directory.Append(s); } Console.WriteLine(directory.ToString());