private IEnumerable<IEnumerable<string>> GetAllFiles(string dir)
{
foreach (var subdir in Directory.EnumerateDirectories(dir))
{
yield return GetAllFiles(subdir).SelectMany(s => s);
}
yield return Directory.EnumerateFiles(dir).Select(f =>
(f.StartsWith(_root) ? f.Substring(_root.Length) : f).TrimStart('\\'));
}