Truncate with where clause
No, Truncate can't be used with a WHERE clause. Truncate simply deallocates all the pages belonging to a table (or a partition) and its indexes.

From BOL:

-- Syntax for SQL Server and Azure SQL Database  

TRUNCATE TABLE   
    [ { database_name .[ schema_name ] . | schema_name . } ]  
    table_name  
    [ WITH ( PARTITIONS ( { &lt;partition_number_expression&gt; | &lt;range&gt; }   
    [ , ...n ] ) ) ]  
[ ; ]  


If you're looking for a more efficient way to delete data, I'd start here.