public IEnumerable <MediaItem> GetMediaItems(MediaFolder folder, string[] mediaExtensions) { DirectoryInfo dir = new DirectoryInfo(folder.Url); if (!dir.Exists) { throw new InvalidUrlException(folder.Url); } List <MediaAnnotation> annotations = LoadAnnotations(folder.Url); foreach (FileInfo file in dir.GetFiles()) { if (Array.Exists(mediaExtensions, ext => ext.ToLower() == file.Extension.ToLower())) { MediaAnnotation ma = annotations.Find(a => a.MediaName == file.Name); string ann = ma == null ? null : ma.Annotation; DateTime ct = ma == null ? file.CreationTime : ma.CreationTime; MediaItem mediaItem = new MediaItem { Name = file.Name, Url = file.FullName, Annotation = ann, CreationTime = ct }; #if SLOW System.Threading.Thread.Sleep(100); #endif yield return(mediaItem); } } }
private static void MergeAnnotation(List <MediaAnnotation> annotationList, MediaAnnotation annotation) { int aIdx = annotationList.FindIndex(a => a.MediaName == annotation.MediaName); if (aIdx >= 0) { annotationList[aIdx] = annotation; } else { annotationList.Add(annotation); } }