2012-04-28 3 views
0

私のようにWhere句でIQueryableが実行されるのはなぜですか?

public IQueryable<Guid> AccessibleCities 
{ 
    get 
    { 
     return CityRepository 
      .FindAll(a => <CONDITIONS>); 
    } 
} 

CityRepository.FindAll実装されています:

public virtual IQueryable<TLookup> FindAll(Expression<Func<TLookup, bool>> predicate) 
{ 
    return DataContext.GetSet<TLookup>().Where(predicate); 
} 

そして私は、私は最後のものを呼び出すと、それは代わりとしてAccessibleCitiesを追加する2つのクエリを生成

anotherRepository 
    .FindAll(a => AccessibleCities.Any(b => ANOTHER CONDITION)); 

これを呼び出しますクエリ。

私を助けてください:)

+0

単純な条件: CityRepository.FindAll(a => a.Id == 'GUID'); – Sergey

+0

のfindAllはそれが { リターンDataContext.GetSet ().Where(述語)私の場合は – Sergey

+0

パブリック仮想のIQueryable のfindAll(式<のFunc >述語)と同じです。 } – Sergey

答えて

1

最終的なクエリは、ちょうどそのように動作しません。デフォルトでは連結されません。

PredicateBuilderクラスをお試しください。それはあなたが達成しようとしているもののためにうまくいくように見えます。

関連する問題