I have done this with Xceed where I can load the create a Xceed.FileSystem.Diskfolder with a disk path, and this then yields abstractfile items when iterated.
abstractfile items which are zip, rar, 7z etc files, can be converted to Xceed.Zip.Archives (by passing the abstract file from the diskfolder, or a Xceed.FileSystem.Diskfile object to the class constructor) and this can be iterated to produce abstract files with the same methods and props as those yielded by Xceed.FileSystem.Diskfolder.
Using this approach I can search and read and display my log files with the same code for files on disk and older files stored in compressed archives.
Files in archives can be searched without the need to first expand compressed files to temporary folders....