2012-05-10 7 views
5

ich habe:Wie Prädikat übergeben, um in C# zu funktionieren?

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

ich viele dieser Funktionen haben. Ich möchte gemeinsame Funktion schreiben mit dictionaryEntries Abfrage Bedingung als Prädikat übergeben.

Zum Beispiel:

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();   
} 

Was

Vielen Dank im Voraus für ??????????????? steht

+0

Dank @reinierpost, ich habe gerade festgelegt 'initialize' Tippfehler. –

Antwort

12

Func<Entry, bool> predicate sollte funktionieren, wo Entry Art von entry variabel ist.

+0

Wie ist der Namespace/die Bibliothek für diese Eintragsklasse? – thanatorr

6

Sie können wie folgt tun:

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

} 
Verwandte Themen