Dynamic Lambda Expression For Filtering

2019-07-23 06:41发布

I have 3 filter conditions on a web page

  1. Filter by dropdown Source
  2. Filter by dropdown Category
  3. 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?

标签: c# linq lambda
1条回答
不美不萌又怎样
2楼-- · 2019-07-23 07:33

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();
查看更多
登录 后发表回答