3

私の質問はこれに関連しています: linq-expression-with-generic-class-properties

今回は共通のIDを持つ新しく作成されたオブジェクトを取得したいと思います。id は実際には外部キーであるため、異なる名前を持つことができます。

私は次のことを思いつきました:

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

メソッドは次のように呼び出されます。

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

残念ながら、エラーが発生します:

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

メソッドに渡される式は、次のようにする必要があります。

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

1 に答える 1