LINQ в asp.net - PullRequest
       20

LINQ в asp.net

0 голосов
/ 14 декабря 2010

В чем разница между IEnumerable и IQuearable в LINQ? Я прочитал больше статей по этому вопросу, но я не понимаю разницы между практиками.

Ответы [ 2 ]

0 голосов
/ 16 января 2011

IEnumerable означает, что я могу вернуть предметы T.

IQueryable означает, что я могу возвращать элементы T, но я также могу принимать операции LINQ (Где, Выбрать и т. Д.), Которые я буду обрабатывать и переводить во все, что предоставляет данные за сценой.

Теперь, конечно, IEnumerable выглядит так, как будто он также принимает операции LINQ, но разница в том, что они никогда не переводятся и вместо этого просто выполняются в памяти. например оператор Where делает что-то вроде этого:

T Где (IEnumerable значения, предикат Func) { foreach (значение переменной в значениях) if (предикат (значение)) доходность возвращаемое значение; }

0 голосов
/ 14 декабря 2010

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 ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...