用于过滤的动态Lambda表达式

Nic*_*rca 1 c# linq lambda

我在网页上有3个过滤条件

  1. 按下拉列表过滤源
  2. 按下拉列表过滤类别
  3. 在StartDate文本框和EndDate文本框之间过滤

我目前正在从表中返回所有行并将它们放入数据集中.我现在想要能够根据用户可能输入的上述过滤器的任意组合来过滤该数据集.或者用户可能选择不输入过滤器.

有人可以帮我用lambda表达式设置吗?

mel*_*okb 7

这是我在自己的代码中用于应用过滤器的模式:

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();
Run Code Online (Sandbox Code Playgroud)