Perhaps:
var files = Directory.EnumerateFiles(path, "*.jpg", SearchOption.TopDirectoryOnly)
.Select(fn => new FileInfo(fn));
var fileDateGroups = files.GroupBy(fi => fi.LastWriteTime.Date);
foreach (var dateGroup in fileDateGroups)
{
string dir = Path.Combine(@"C:\", dateGroup.Key.ToString("yyyyMMdd"));
Directory.CreateDirectory(dir);
foreach (var file in dateGroup)
{
string newPath = Path.Combine(dir, file.Name);
File.Copy(file.FullName, newPath, true);
}
}
Edit: If you want to search for multiple file extensions you need to filter them manually:
var allowed = new[]{ ".png", ".jpg" };
var files = Directory.EnumerateFiles(path, "*.*", SearchOption.TopDirectoryOnly)
.Where(fn => allowed.Contains(Path.GetExtension(fn)))
.Select(fn => new FileInfo(fn));