Usando la parametrización de C # SQL en los nombres de columna

Estoy teniendo un problema. Quiero que esto funcione, pero no lo hace:

SqlDataSource.SelectCommand = "SELECT blah1, blah2 FROM myTable WHERE @ColumnName = @Value";

SqlDataSource.SelectParameters.Add("ColumnName", System.Data.DbType.String, "one");
SqlDataSource.SelectParameters.Add("Value", System.Data.DbType.String, "two");

No sustituirá el primer parámetro "ColumnName". Si elimino ese parámetro y coloco el nombre de la columna de esta manera, funcionará:

SqlDataSource.SelectCommand = "SELECT blah1, blah2 FROM myTable WHERE one = @Value";

SqlDataSource.SelectParameters.Add("Value", System.Data.DbType.String, "two");

Tengo una interfaz de usuario donde el usuario puede seleccionar el nombre de la columna de la base de datos para buscar. Quiero protegerme de cualquier tipo de ataque por inyección. ¿Alguna idea de cómo puedo hacer que esto funcione?

Una idea sobre la que leí fue usar una tabla de consulta para tomar el índice delDropDownList y tire de los nombres de las columnas de esa manera. Podría hacer ese trabajo, pero preferiría que la parametrización funcione si es posible, ya que me parece más natural.

Gracias de antemano por cualquier ayuda que pueda proporcionar.

Respuestas a la pregunta(3)

Su respuesta a la pregunta