Better ways to build a linq specification for querying or is this the only way?
I would definitely write it differently but exact result depends on whether your AndSpecification supports only two parameters or it can accept IEnumerable of attachments. 

If it has two parameters and you expect to nest those AndSpecifications if you will have more specs to compose then I would write something like this:  

var typeSpecification = string.IsNullOrEmpty(type) ? null : new AttachmentFileTypeSpecification(type);
var statusSpecification = string.IsNullOrEmpty(status) ? null : new AttachmentStatusSpecification(status.AsEnum&lt;AttachmentStatus&gt;());
var specificationsToCompose = new IAttachmentSpecification[] {typeSpecification, statusSpecification};

var composedSpecification = specificationsToCompose
                     .Aggregate((IAttachmentSpecification) null, (accumulator, currentSpec) =&gt;
                         {
                             if (accumulator != null &amp;&amp; currentSpec != null) return new AndSpecification&lt;Attachment&gt;(accumulator, currentSpec);
                             return accumulator ?? currentSpec;
                         })
                      ?? new AttachmentSpecification();

...

this.Specification = composedSpecification;