You should use the wp_get_attachment_url( $id );
function to get the attachment's url.
So your code will look more like this:
foreach ( $query_pdf->posts as $file) {
if($link == $pdf[]= wp_get_attachment_url($file->ID)){
echo '<option value="'.$pdf[]= wp_get_attachment_url($file->ID).'" selected="true">'.$pdf[]= wp_get_attachment_url($file->ID).'</option>';
}else{
echo '<option value="'.$pdf[]= wp_get_attachment_url($file->ID).'">'.$pdf[]= wp_get_attachment_url($file->ID).'</option>';
}
$count++;
}
The link should take you to the pdf instead on the single attachment template.
Note: I only sampled the foreach loop as that was the values that was being saved.