IEnumerable и IQueryable - два наиболее часто используемых термина любого обсуждения LINQ. Здесь я пытаюсь упростить два интерфейса в зависимости от их поведения. В мире LINQ у нас, как правило, мало доступных поставщиков в .NET Framework, таких как LINQ to Object, LINQ to SQL, LINQ to XML.
Это утверждение, что каждый оператор LINQ возвращает IEnumerable. IEnumerable работает поэтапно. Значение, когда вы пишете,
var q = from a in b
where a > 5
select a;
Создает список «b» в зависимости от «где», затем создает другой список для «выбора». Это поведение LINQ to Object и LINQ to XML.
Когда вы используете LINQ to SQL, он использует IQueryable. Этот интерфейс наследует от IEnumerable, но обычно любой LINQ to SQL генерирует T-SQL на сервере, чтобы иметь возможность получить данные для нас. Это оценивает и генерирует запрос за один раз и дает нам все данные.
В чем разница между IQueryable и IEnumerable ?