Разница IEnumerable и IQueryable при работе с удаленной БД?



Объект IEnumerable представляет набор данных в памяти и может перемещаться по этим данным только вперед.

IQueryable располагается в пространстве имен System.Linq. Объект предоставляет удаленный доступ к базе данных и позволяет перемещаться по данным как в прямом порядке от начала до конца, так и в обратном порядке. В процессе же выполнения запроса, происходит оптимизация запроса.



IEnumerable phoneIEnum = db.Phones;

var phones1 = phoneIEnum.Where(p => p.Id > id).ToList(); //SELECT * FROM PHONES, фильтрация на стороне клиента

IQueryable phoneIQuer = db.Phones;

int id = 3;

var phones2 = phoneIQuer.Where(p => p.Id > id).ToList(); //SELECT * FROM PHONES WHERE ID > 3