2015-08-14 1 views
0

я получаю следующее сообщение при попытке удалить FileInfo:Удалить FileInfo с помощью LINQ

аргументы типа для метода «System.Linq.Enumerable.Select (System.Collections.Generic.IEnumerable, System.Func) 'не может быть выведено из использования. Попробуйте явно указать аргументы типа.

Вот мой код:

private void btn_Click(object sender, EventArgs e) 
     { 
      List<FileInfo> duplicatedFiles = Fso.GetAllDuplicatedFiles(@"C:\", true); 

      duplicatedFiles.Cast<FileInfo>().Select(f => f.Delete()); 
     } 

Спасибо за любую помощь

ответ

2

Select выбирает что-то, FileInfo.Delete является void. Но запрос LINQ в любом случае не должен вызывать побочные эффекты. Кроме того, почему вы бросаете FileInfo в FileInfo?

Вы можете использовать List.ForEach, который не LINQ:

List<FileInfo> duplicatedFiles = Fso.GetAllDuplicatedFiles(@"C:\", true); 
duplicatedFiles.ForEach(fi => fi.Delete()); 
3

Select предназначен для выступающих данных, а не для выполнения побочных эффектов.

Просто используйте foreach цикл:

foreach(FileInfo fileInfo in duplicatedFiles) 
{ 
    fileInfo.Delete(); 
} 
+1

Может downvoter объяснить? – Ani

+0

Запрос был предоставлен Linq ... –

+1

LINQ не является подходящим выбором для выполнения побочных эффектов. – Ani

 Смежные вопросы

  • Нет связанных вопросов^_^