Expressão LINQ com propriedade genérica
Minha pergunta está relacionada a esta:linq-expression-with-generic-class-properties
Desta vez eu gostaria de obter objetos recém-criados que têm o id em comum. O id é na verdade a chave estrangeira e, portanto, pode ter nomes diferentes.
Eu vim com o seguinte:
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);
}
O método seria chamado assim:
var modified = GetNew(dbObjects, id, date, entity => entity.PersonId);
Infelizmente recebo o erro:
'idSelector' is a variable but is used like a method.
A expressão passada para o método deve fazer algo assim:
objects.Where(o => o.PersonId == id && o.CreatedDate > date);