Чтобы открыть его в любом внешнем приложении, вам нужно записать байты на диск, а затем с помощью Process.Start запустить соответствующее приложение во временном файле. Просто передайте временное имя файла (с соответствующим расширением) в качестве единственного аргумента Process.Start, и он откроет этот файл в соответствующем приложении.
Некоторые приложения могут иметь способ подачи потока байтов, но это должно быть явно обработано целевым приложением.
Для примера кода вы можете сделать что-то вроде:
byte[] filedata = GetMyByteArray();
string extension = GetTheExtension(); // "pdf", etc
string filename =System.IO.Path.GetTempFileName() + "." + extension; // Makes something like "C:\Temp\blah.tmp.pdf"
File.WriteAllBytes(filename, filedata);
var process = Process.Start(filename);
// Clean up our temporary file...
process.Exited += (s,e) => System.IO.File.Delete(filename);