To begin, you can simplify version with Predicate
:
Predicate<object> firstName = pers =>
{
var person = pers as Person;
return person.Firstname.StartsWith(searchTerm);
};
Predicate<object> lastName = pers =>
{
var person = pers as Person;
return person.Lastname.StartsWith(searchTerm);
};
then you can replace with Func
:
Func<object, bool> firstName = pers =>
{
var person = pers as Person;
return person.Firstname.StartsWith(searchTerm);
};
Func<object, bool> lastName = pers =>
{
var person = pers as Person;
return person.Lastname.StartsWith(searchTerm);
};
or use local functions (C# version >= 7.0):
bool firstName(object pers)
{
var person = pers as Person;
return person.Firstname.StartsWith(searchTerm);
};
bool lastName(object pers)
{
var person = pers as Person;
return person.Lastname.StartsWith(searchTerm);
};
or use own delegate
:
public delegate bool SetName(object pers);
//...
SetName firstName = pers =>
{
var person = pers as Person;
return person.Firstname.StartsWith(searchTerm);
};
SetName lastName = pers =>
{
var person = pers as Person;
return person.Lastname.StartsWith(searchTerm);
};