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