2012-05-10 32 views
5

我:如何將謂詞傳遞給C#中的函數?

public void InitializeStatusList(DropDownList list) 
    { 
     var dictionaryEntries = GetEntriesFromDatabase(); 
     list.DataSource = dictionaryEntries.Where(entry => entry is EntryStatus1 || entry is EntryStatus2); 
     list.DataBind();   
    } 

我有很多的這些功能。我想用dictionaryEntries作爲謂詞傳遞查詢條件來編寫通用函數。

例如:

public void InitializeStatusList(DropDownList list) 
{ 
    CommonInitializeStatusList(DropDownList list, entry => entry is EntryStatus1 || entry is EntryStatus2); 
} 

public void CommonInitializeStatusList(DropDownList list, ??????????????? predicate) 
{      
    var dictionaryEntries = GetEntriesFromDatabase(); 
    list.DataSource = dictionaryEntries.Where(predicate); 
    list.DataBind();   
} 

什麼提前

+0

感謝@reinierpost,我只是固定'initialize'錯字。 –

回答

12

Func<Entry, bool> predicate代表???????????????

感謝應該工作,其中Entryentry變量的類型。

+0

這個Entry類包含的命名空間/庫是什麼? – thanatorr

6

你可以這樣做:

public void InitializeStatusList(DropDownList list) 
{  
    Func<Entry,bool> predicate=entry=>entry is EntryStatus1 || entry is EntryStatus2; 
    CommonInitializeStatusList(list, predicate); 
} 

public void CommonInitializeStatusList(DropDownList list, Func<Entry,bool> predicate) 
{         
    var dictionaryEntries = GetEntriesFromDatabase();  
    list.DataSource = dictionaryEntries.Where(predicate); 
    list.DataBind(); 

}