Reputation: 25
i try to take 5 newest files from my Directory
:
string folder = @"C:\temp";
DirectoryInfo dir = new DirectoryInfo(folder);
var files = dir.GetFiles()
.OrderByDescending(f => f.LastWriteTime).Take(5);
And this return 0 result although the folder if full f files.
UPDATE:
private static List<string> _folders;
public delegate void OnFileAddDelegate(FileInfo[] files);
public event OnFileAddDelegate OnFileAddEventHandler;
public void SearchFiles()
{
foreach (string folder in _folders)
{
if (Directory.Exists(folder))
{
DirectoryInfo dir = new DirectoryInfo(folder);
var files = dir.GetFiles()
.OrderByDescending(f => f.LastWriteTime).Take(5).ToArray();
foreach (var item in files)
OnFileAddEventHandler(files);
}
}
}
Currently my problem is that i am looking for the newest 5 files but if only 1 file exist in return more than 1 (same file twice)
Upvotes: 0
Views: 638
Reputation: 3603
You're calling your Handler passing it ALL files while enumerating EACH file (you're not passing item but files, so if you have 10 times you're saying, 10 times, pass the whole list)
What you're doing :
foreach (var item in files)
OnFileAddEventHandler(files);
What you probably want to do
OnFileAddEventHandler(files);
Or if it takes single files
foreach (var item in files)
OnFileAddEventHandler(item);
Upvotes: 2