I am simply implementing a filter function for one my forms. I'd like to hear some reviews where I can improve in my code or my functionality :)
Summary
I have 1 textbox and 2 comboboxes (See image below):
Category options
Status options
Code
public MainView()
{
InitializeComponent();
categoryText.SelectedIndex = 0;
statusText.SelectedIndex = 0;
RefreshData();
}
List<ConcessionModel> concessionList = new List<ConcessionModel>();
public void RefreshData()
{
DataAccess db = new DataAccess();
concessionList = db.LoadConcessionLog();
dataGrid.DataSource = concessionList;
dataGrid.Columns["Id"].Visible = false;
dataGrid.Columns["PersonCompletingID"].Visible = false;
}
private void searchBtn_Click(object sender, EventArgs e)
{
dataGrid.DataSource = Filter(productText.Text, categoryText.Text, statusText.Text);
}
private List<ConcessionModel> Filter(string product, string category, string status)
{
if (category == "All" && status != "All")
{
return concessionList
.Where(x => x.Product
.IndexOf(product, StringComparison.InvariantCultureIgnoreCase) >= 0 && x.Status
.IndexOf(status, StringComparison.InvariantCultureIgnoreCase) >= 0)
.ToList();
}
else if (category != "All" && status == "All")
{
return concessionList
.Where(x => x.Product
.IndexOf(product, StringComparison.InvariantCultureIgnoreCase) >= 0 && x.Category
.IndexOf(category, StringComparison.InvariantCultureIgnoreCase) >= 0)
.ToList();
}
else if(category == "All" && status == "All")
{
return concessionList
.Where(x => x.Product
.IndexOf(product, StringComparison.InvariantCultureIgnoreCase) >= 0).ToList();
}
else
{
return concessionList
.Where(x => x.Product
.IndexOf(product, StringComparison.InvariantCultureIgnoreCase) >= 0 && x.Category
.IndexOf(category, StringComparison.InvariantCultureIgnoreCase) >= 0 && x.Status
.IndexOf(status, StringComparison.InvariantCultureIgnoreCase) >= 0)
.ToList();
}
}
public void ClearConcessionFilter()
{
productText.Clear();
categoryText.SelectedIndex = 0;
statusText.SelectedIndex = 0;
dataGrid.DataSource = concessionList;
}
ConcessionModel
public class ConcessionModel
{
public int Id { get; set; }
[DisplayName("Date Created")]
public DateTime DateCreated { get; set; }
public int PersonCompletingID { get; set; }
public string Product { get; set; }
[DisplayName("Batch Number")]
public string BatchNumber { get; set; }
[DisplayName("Quantity Affected")]
public string QuantityAffected { get; set; }
[DisplayName("Reason For Concession")]
public string ReasonForConcession { get; set; }
public string Category { get; set; }
public string Status { get; set; }
}



ConcessionModel? \$\endgroup\$