Jaka jest różnica pomiędzy IEnumerable oraz IQueryable?


Najważniejsza różnica jest taka, że IEnumerable korzysta z zasobów pamięci lokalnej aplikacji a IQueryable operuje na zasobach po stronie dostawcy a do aplikacji przekazuje przefiltrowane dane.

Dobrym przykładem jest odczyt danych z bazy danych.
Chcemy z bazy danych wyciągnąć top 5 rekordów według zadanego warunku z tabeli mającej 1 milion wierszy.

IEnumerable

W przypadku IEnumerable do aplikacji zostaną pobrane wszystkie wiersze (1 milion) a następnie nastąpi filtrowanie danych i zwrócenie top 5 wyników.

IQueryable

Korzystając z IQueryable dane zostaną przefiltrowane po stronie bazy danych i do aplikacji zwrócone zostanie top 5 wyników.

Podsumowując, IEnumerable najlepiej używać gdy operujemy na kolekcjach w pamięci lokalnej, natomiast IQueryable powinniśmy używać gdy operujemy na danych zewnętrznych (np. baza danych).

januszgorszyciel 07-11-2018 11:38
"Najważniejsza różnica jest taka, że IEnumerable korzysta z zasobów pamięci lokalnej aplikacji a IQueryable operuje na zasobach po stronie dostawcy a do aplikacji przekazuje przefiltrowane dane." Przykład jest ok ale nie mogę się zgodzić z powyższym. Jeśli zrobimy IQueryable do lokalnie posiadanej listy to również będziemy korzystać z pamięci lokalnej.

januszgorszyciel 07-11-2018 11:40
https://stackoverflow.com/questions/252785/what-is-the-difference-between-iqueryablet-and-ienumerablet


© 2024 - SkillsTest.pl | | Regulamin | Polityka Prywatnosci