2012-05-10 12 views
5

tengo:¿Cómo pasar el predicado a la función en C#?

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

que tienen muchas de estas funciones. Quiero escribir la función común con dictionaryEntries condición de consulta pasado como predicado.

Por ejemplo:

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

Lo que significa ???????????????

Gracias de antemano

+0

Gracias @reinierpost, acabo fijos 'initialize' error tipográfico. –

Respuesta

12

Func<Entry, bool> predicate debería funcionar, donde Entry es entry tipo de variable.

+0

¿cuál es el espacio de nombre/biblioteca que se debe incluir para esta clase de Entrada? – thanatorr

6

Se puede hacer así:

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

} 
Cuestiones relacionadas