public static IEnumerable <ImageViewModel> GetAllImages(IEnumerable <EntryViewModel> entries, DataOperationUnit dataOpUnit = null) { List <ImageViewModel> ret = new List <ImageViewModel>(); Queue <EntryViewModel> targetPool = new Queue <EntryViewModel>(entries); while (targetPool.Count() > 0) { List <Guid> bookIds = new List <Guid>(); List <Guid> pageIds = new List <Guid>(); List <Guid> imageIds = new List <Guid>(); int count = 0; var entry = targetPool.Dequeue(); var book = entry as BookViewModel; var page = entry as PageViewModel; var image = entry as ImageViewModel; if (book != null) { bookIds.Add(book.ID); ++count; } if (page != null) { pageIds.Add(page.ID); ++count; } if (image != null) { imageIds.Add(image.ID); ++count; } if (targetPool.Count() == 0 || count == SpecificationDefaults.SQLITE_MAX_VARIABLE_NUMBER) { try { ImageDao dao = new ImageDao(); ret.AddRange(dao.GetAllImages(bookIds, pageIds, imageIds, dataOpUnit?.CurrentConnection).ToViewModel()); } catch (SQLiteException) { throw; } } } return(ret); }