Как передать предикат для функции в 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();
}
что означает ???????????????
спасибо заранее
2 ответов
вы можете сделать так:
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();
}