SQL OrderBy When using an In() query
Your best bet is going to be to split the list into a temp table.

I'm using Jeff Moden's DelimitedSplit8k.  You can find the code here.  Note it includes an ItemNumber column that is the values in order.

DECLARE @DelimString varchar(50) = '4,5,3'

SELECT * INTO #DelimList FROM dbo.DelimitedSplit8k(@DelimString,',')

SELECT Table.*
FROM Table
JOIN #DelimList
    ON Table.Id = #DelimList.Item
ORDER BY #DelimList.ItemNumber


This has the added benefit of being faster for large numbers of values in the delimited list.