I have 3 filter conditions on a web page
- Filter by dropdown Source
- Filter by dropdown Category
- Filter By Between StartDate textbox and EndDate textbox
I currently am getting all rows back from the table and putting them in dataset. I want to now be able to filter that dataset based on any combination of the above filters the user may input. Or maybe the user chooses to input no filters.
Can someone help me set this up using lambda expressions?
This is the pattern I use in my own code for applying filters:
var data = GetData();
var sourceFilter = SourceDropDown.Value;
if (!string.IsNullOrEmpty(sourceFilter))
data = data.Where(d => d.Source == sourceFilter);
var categoryFilter = CategoryDropDown.Value;
if (!string.IsNullOrEmpty(categoryFilter))
data = data.Where(d => d.Category == categoryFilter);
DateTime startDateFilter, endDateFilter;
if (DateTime.TryParse(TxtStartDate.Text, out startDateFilter) &&
DateTime.TryParse(TxtEndDate.Text, out endDateFilter))
data = data.Where(d => d.DT >= startDateFilter && d.DT <= endDateFilter);
return data.ToList();