Extracting to a FileStream is one way to do what you want.
Another way is to strip the path from the FileName on the ZipEntry before extracting. Like so:
using (var zip = ZipFile.Read(whatever))
foreach (var entry in zip)
entry.FileName = System.IO.Path.GetFileName(e.FileName);
Some explanation: Each ZipEntry knows how to extract itself to a file, with the filename given by the
FileName property on the ZipEntry class. The code above simply sets the FileName property on each entry to the value of the FileName without any leading path. Then it calls Extract(), which will extract the entry into the current working directory.
You can use the appropriate Extract() overload to extract into a directory of your choice. Because the code above does not call ZipFile.Save(), the changes made to the ZipEntry instances are not made permanent. If you were to re-open the same ZipFile, the
paths would again be present on all the ZipEntry instances.