Datagridview filter with BindingSource I want to perform a filter on a DataGridView using 3 different TextBox.
The solution below works, but does not consider very effective and good. Is there a way to improve it?

private void textBoxCod_TextChanged(object sender, EventArgs e)
{
    Filter();
}

private void textBoxArt_TextChanged(object sender, EventArgs e)
{
    Filter();
}

private void textBoxDesc_TextChanged(object sender, EventArgs e)
{
    Filter();
}

private void Filter()
{
    string queryFilter = "1=1"; //With this we avoid to check if there is the AND in the query
    var filterCod = textBoxCod.Text;
    var filterArt = textBoxArt.Text;
    var filterDescr = textBoxDesc.Text();
    if (filterCod != "")
        queryFilter += " AND product_code LIKE '%" + filterCod + "%'";
    if(filterArt != "")
        queryFilter += " AND article LIKE '%" + filterArt + "%'";
    if (filterDescr != "")
        queryFilter += " AND description LIKE '%" + filterDescr + "%'";

    bSource.Filter = queryFilter;
    dataGridView.DataSource = bSource;
}


Before I used the string.Format but I realized that not having optional parameters could not combine several filters.
Adding few improvements to @Steve's answer:


It is always good to check for spaces(blanks):     if(!string.IsNullOrWhiteSpace(filterCod))
Wouldn't be nicer to have queries.Any() instead of queries.Count &gt;= 1 ?