2012-03-27 137 views
1

我有過濾器的下拉來源動態Lambda表達式用於過濾

  1. 網頁上的3個過濾條件
  2. 通過下拉分類過濾
  3. 過濾方式起始日期文本框和結束日期文本框
之間

我目前正在從表中取回所有行並將它們放入數據集中。我想現在能夠基於用戶可能輸入的上述過濾器的任何組合來過濾該數據集。或者,也許用戶選擇不輸入過濾器。

有人可以幫我使用lambda表達式來設置它嗎?

+0

這是ASP.NET,MVC,...? – 2012-03-27 15:31:57

回答

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(); 
+0

@NickLaMarca我不明白爲什麼它不會。 – flai 2012-03-27 15:36:59

+0

這將對具有有效值的任何過濾器同時應用所有過濾器。請注意,我假設'GetData()'返回一個類型爲'IQueryable'而不是'DataSet'的對象,所以您需要將它應用於從'DataContext'直接返回的數據。 – mellamokb 2012-03-27 15:37:10

+0

GetData返回帶有一個數據表的數據集 – 2012-03-27 15:39:20