sobota, 28 sierpnia 2010

Różnice między IEnumerable i IQueryable

Ostatnio zastanawiałem się nad tym czy w swojej aplikacji zwracać obiekty zapytania LINQ jako IEnumerable czy też jako IQueryable.

IEnumerable jest pierwotnym interfejsem który wykorzystujemy w LINQ. Najważniejsze w nim jest to, że tworząc do niego zapytania działamy w pamięci lokalnej aplikacji. Tak więc tworząc zapytania do bazy danych z różnymi metodami jak where, take, skip itd. najpierw cała tabela jest kopiowana do pamięci a następnie są z niej wybierane szukane elementy.

IQueryable jest to idealny sposób zwracania zapytań w przypadku odnoszenia się do bazy danych. Buduje zapytanie do bazy które zawiera już w sobie wszelkie wcześniej wymienione metody (w języku sql napisane oczywiście).

Podsumowując:
IEnumerable - operacje w pamięci
IQueryable - LINQ to SQL, Entity Framework itp.

Brak komentarzy:

Prześlij komentarz