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