Я пытаюсь найти, указав путь, список файлов с одинаковыми именами файлов, но разными расширениями (и .dwg
) в том же каталоге.Найти несколько файлов в одном каталоге
У меня есть этот код:
String[] FileNames = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Where(s => s.EndsWith(".bak") || s.EndsWith(".dwg")).ToArray();
var queryDupNames = from f in FileNames
group f by Path.GetFileNameWithoutExtension(f) into g
where g.Count() > 1
select new { Name = g.Key, FileNames = g };
Это прекрасно работает, чтобы найти файлы с тем же именем, но и во всей системе. Мне нужно только получить те, которые находятся в одном каталоге.
Например:
- Dir1\filename1.bak
- Dir1\filename1.dwg
- Dir1\filename2.bak
- Dir1\filename2.dwg
- Dir1\filename3.dwg
- DiferentDir\filename1.bak
- DiferentDir\filename1.dwg
- DiferentDir\filename3.dwg
Результат должен быть:
- Dir1\filename1.bak
- Dir1\filename1.dwg
- Dir1\filename2.bak
- Dir1\filename2.dwg
- DiferentDir\filename1.bak
- DiferentDir\filename1.dwg
Но с моим кодом, имя_файла3 также включены из-за
g.count() > 1
это правда. Это группирование только имя файла ... Я попытался исправить с помощью этого кода, но я получил 0 результат:
String[] FileNames = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Where(s => s.EndsWith(".bak") || s.EndsWith(".dwg")).ToArray();
var queryDupNames = from f in FileNames
group f by new { path = Path.GetLongPath(f), filen = Path.GetFileNameWithoutExtension(f) } into g
where g.Count() > 1
select new { Name = g.Key, FileNames = g };
Любая помощь или ключ?
Thanks
'Path' не имеет метод' GetLongPath'. Вы используете AlphaFS? Вы пытались с помощью 'GetDirectoryName'? –
Я использую dll Delimon из-за проблемы с длинной строкой пути http://stackoverflow.com/questions/31919748/directory-getfiles-stops-searching-when-error –
В этом случае проблема заключается в библиотеке, а не в коде LINQ , Являются ли ваши пути действительно относительными? Поддерживает ли библиотека относительные пути? –