Constructing query conditions from answers that may be null
Since you are doing the same operation over and over, you can put your strings in an array or list and use a mapping function.

For example:

//this struct makes it easy to initialize the list of values
public struct Tuple
{
  public String Value;
  public String InterpolatedValue;
  public Tuple(string val, string def)
  {
    Value = val;
    InterpolatedValue = def;
  }
}

//dummy answers to the questions
string question2Answer = "aaa";
string question3Answer = "bbb";
string question4Answer = "";
string question5Answer = "ddd";

//initialize a list of answer/interpolated answer strings
List&lt;Tuple&gt; list = new List&lt;Tuple&gt;()
{
  new Tuple(question2Answer, $" and ProdUsers = {question2Answer}"),
  new Tuple(question3Answer, $" and ProdFullyOnline = '{question3Answer}'"),
  new Tuple(question4Answer, $" and ProdMultiCurrency = '{question4Answer}'"),
  new Tuple(question5Answer, $" and ProdPrice &lt;= {question5Answer}"),
};

//loop over list, checking for non empty answer
//this line and the next takes the place of almost all of your original code
IEnumerable&lt;string&gt; tempList= list.Select(t =&gt; (string.IsNullOrWhiteSpace(t.Value) ? string.Empty : (t.DefaultValue)));

//concat results into a single string
string text = string.Join("", tempList);

Console.WriteLine(text);


Outputs: " and ProdUsers = aaa and ProdFullyOnline = 'bbb' and ProdPrice &lt;= ddd"

I had to add some boilerplate code to make the example work, but I think one gets the idea...