C#、のIQueryableおよびIEnumerableを差

次のように最近のインタビューで、私はIQueryableをとのIEnumerableの違いについて尋ね、と私はいくつかの記事を読んで、要約されています:

IQueryableはIEnumerableインターフェイスから継承する、ということを理解すること1.インターフェースです。

2.のIQueryable式ツリーが、それは、その利点の一つとして見ることができます。したがって、このような最初の式ツリーは、データベース操作が実際に行われる場合、それはデータを取得するために式ツリーを実行するキャッシュされるデータのフィルタリング、ソート、およびその他の操作、などのIQueryable操作を、使用しているとき。

   それは、このようなデータの2つのトップ2行を選択として、言うことです、それは最初のキャッシュは、式ツリーにフィルタトップ2を取得します。データベースの操作の時までは、データベースのトップ2のデータをフィルタリングします。=「のIQueryable遅延ローディングメカニズムが存在する直接データデータベースからフィルタ。

3. IEnumerableを、動作するように、そのデータとのIQueryable異なる、それはメモリ内にデータベースから取り出したすべてのデータを進めます。次に、ソート、フィルタリングを含むフィルタリング動作のメモリ内のデータ、など。=>でIEnumerableをデータメモリフィルタ

 

我々はエレベーターでリポジトリを説明するために例を使用します

パブリック クラスEmployeeRepository:IEmployeeRepository 
{ 
    プライベート 読み取り専用CompanyContextの_context。

    公共EmployeeRepository(CompanyContextコンテキスト)
    { 
         _context = 文脈。
    } 


    公共のIEnumerable <従業員> GetIEnumerableEmployees()
    { 
        戻り_context.Employeesと、
    } 

   公共のIQueryable <従業員> GetIQueryableEmployees()
    { 
        戻り_context.Employeesと、
    } 
 
}

 

おすすめ

転載: www.cnblogs.com/wphl-27/p/10979413.html