Wyrażenie LINQ z właściwością ogólną

Moje pytanie dotyczy tego:linq-expression-with-generic-class-properties

Tym razem chciałbym uzyskać nowo utworzone obiekty, które mają wspólny identyfikator. Identyfikator jest w rzeczywistości kluczem obcym i dlatego może mieć różne nazwy.

Wymyśliłem następujące:

public static IEnumerable<T> GetNew<TId, T>(IQueryable<T> objects, TId id, DateTime date, Expression<Func<T, TId>> idSelector) 
    where T : class, ISyncable<TId>
{
    return objects.Where(o => idSelector(o) == id && o.CreatedDate > date);
}

Metoda zostanie nazwana w ten sposób:

var modified = GetNew(dbObjects, id, date, entity => entity.PersonId);

Niestety pojawia się błąd:

'idSelector' is a variable but is used like a method.

Wyrażenie przekazane do metody powinno zrobić coś takiego:

objects.Where(o => o.PersonId == id && o.CreatedDate > date);

questionAnswers(1)

yourAnswerToTheQuestion