score:1

invoicedata = 
    from x in context.pdtdeliverytables 
    from odr in context.ordertables.defaultifempty() 
    where (odr.orderid != 0 && x.orderid == x.orderno) 
          || x.orderid == x.deliveryno)
    join pt in context.diagramnotables on x.diagramid equals pt.diagramid
    join mt in context.materialtables on pt.materialid equals mt.materialid 
    into t 
    from ct in t.defaultifempty()
    where (pt.customerid == customerid) 
           && (x.deliverydate >= (startdate ?? datetime.minvalue) 
               && x.deliverydate <= (enddate ?? datetime.maxvalue))
    orderby x.deliverydate  ascending
    select new invoicetable
        {    
        }; 

Related Query