2012-09-19 51 views
2

我對以下FindBy和FindByExp函數中的底層機制有點困惑。我明白FindyByExp將在數據庫端執行謂詞。但是FindBy函數呢?它是否從數據庫中獲取所有對象並首先將它們加載到內存中,然後執行謂詞?LINQ中的IEnumable和IQueryable「Where」子句之間的區別

public IQueryable<T> FindBy(Func<T, bool> predicate) 
    { 
     return context.Get<T>().Where(predicate).AsQueryable<T>(); 
    } 

    public IQueryable<T> FindByExp(Expression<Func<T, bool>> predicate) 
    { 
     return context.Get<T>().Where(predicate).AsQueryable<T>(); 
    } 

回答

5

FindBy會得到數據庫中的所有T對象,並在你的程序在內存中進行篩選,當你列舉的結果。

FindByExp將更改在數據庫服務器上執行的查詢並添加where子句。

相關問題