Manipulation of lists: How to configure the SortBy columns in Dataset dynamically?

Given a set of data like this:

ds = Data set @ {<|"C_1" -> 5, "C_2" -> 2, "C_3" -> 3 |>, <|"C_1" -> two,
"C_2" -> 3, "C_3" -> 4 |>, <|"C_1" -> 3, "C_2" -> 2,
"C_3" -> 1 |>, <|"C_1" -> 2, "C_2" -> 3, "C_3" -> 8 |>};

notice that there is _ in column names occasionally.
I want to define a function to order rows with dynamically configured columns to be used in this way. fDatasetSortBy["C_1","C_3","C_2"] or fDatasetSortBy["C_2","C_3","C_1"]

(* 1st *) fDatasetSortBy[s1_, s2_, s3_] : = ds[SortBy[{# s1,# s2, # s3}&]]

or

(* 2nd *) fDatasetSortBy[s1_, s2_, s3_] : = ds[SortBy[ToExpression["{#" <> s1 <> ",#" <> s2 <> ", #" <> s3 <> "}&"]]]

but 1st case does not work, the 2nd one comes up failure Yes there are _ It exists in the column names. How to make a pefect?
Thank you!