Filter Producs by any property
You code seems to contradict your text. You say:


  For example, if he wants to search only with Name, he will write something only in Name textbox. If he wants to search product which name is "Box" and also the productType is "A", then he will write "Box" in name textbox and will choose A type in comboBox.


And yet each method seems to contain multiple Where clauses.

Wouldn't it be more flexible to construct an IQueryable&lt;T&gt;? Something along these lines:

private IQueryable&lt;Product&gt; GetProductsQueryable(Product request)
{
    var queryable = _dbContext.Products.AsQueryable();

    if (!string.IsNullOrEmpty(request.Name))
    {
        queryable = queryable.Where(x =&gt; x.Name.Contains(request.Name));
    }

    if (!string.IsNullOrEmpty(request.Code))
    {
        queryable = queryable.Where(x =&gt; x.Code.Contains(request.Code));
    }

    if (!string.IsNullOrEmpty(request.Barcode))
    {
        queryable = queryable.Where(x =&gt; x.Barcode.Contains(request.Barcode));
    }

    return queryable;
}