用于过滤的动态Lambda表达式

时间:2012-03-27 15:30:05

标签: c# linq lambda

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

  1. 按下拉菜单来源
  2. 按下拉类别过滤
  3. 在StartDate文本框和EndDate文本框之间过滤
  4. 我目前正从表中获取所有行并将它们放入数据集中。我现在想要能够根据用户可能输入的上述过滤器的任意组合来过滤该数据集。或者用户可能选择不输入过滤器。

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

1 个答案:

答案 0 :(得分: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();