2017-09-18 7 views
-1

コレクションを含むオブジェクトを選択したいと考えています。このコレクションには、アイテムのみが含まれている必要があります。コレクションにアクティブなアイテムのみが含まれているオブジェクトとそのコレクションを選択するラムダ式

これは呼び出しです:

EntityResult<TEntity> = SelecFor(LAMBDA_EXPRESSION , "NameOfCollectionPropertyToInclude"); 

私はリポジトリ層レベルでそれを照会することができます知っているが、それは

可能だ場合、私はここでそれを実行したいと思います。これは、メソッドです。

public virtual EntityResult<TEntity> SelectFor(Expression<Func<TEntity, bool>>, params string[] entitiesToLoad) 
{} 

答えて

0

アイデアはあなたの中に、あなたはIQueryableにエンティティをキャスト、ありますエンティティをフィルタリングしてからフィルタリングします。

public async Task<TEntity> SingleOrDefaultAsyncEager(Expression<Func<TEntity, bool>> filter, params Expression<Func<TEntity, object>>[] includes) 
    { 
     var query = _context.Set<TEntity>().AsQueryable(); 
     if (includes != null) 
     { 
      query = includes.Aggregate(query, (current, include) => current.Include(include)); 
     } 
     return await query.SingleOrDefaultAsync(filter); 
    } 

第2の表現では、ラムダを渡すことができます。 Es:

repository.SingleOrdDefaultAsyncEager(x=> x.Id == 5, y=> y.collection); 
関連する問題