Linq, какая разница в возврате данных в var, list, IEnumerable и IQueryable? - PullRequest
1 голос
/ 25 ноября 2010

Я новичок в Linq, пожалуйста, ознакомьте меня с некоторыми основными вещами.

В читайте некоторые статьи о Linq. Некоторые авторы заполняют данные в var из запроса Linq, некоторые заполняют список объектов пользовательских типов, а некоторые заполняют данные в IEnumerable, а некоторые делают это в IQuryable. Я не мог понять, какая разница в этих 4, и какую из них следует использовать в какой ситуации.

Я хочу использовать Linq to SQL. Что я должен использовать?

1 Ответ

5 голосов
/ 25 ноября 2010

Ну, вы никогда не сможете объявить , что метод возвращает var - он действителен только для локальных переменных. Это в основном означает «компилятор, пожалуйста, определите статический тип этой переменной на основе выражения в правой части оператора присваивания».

Обычно запрос LINQ to Objects возвращает IEnumerable<T>, если он возвращает последовательность некоторого вида, или просто один экземпляр для таких вещей, как First().

Для запроса LINQ to SQL или EF будет использоваться IQueryable<T>, если они хотят, чтобы дополнительные параметры запроса могли основываться на существующем запросе, а добавленные биты анализировались как часть процесса построения SQL. В качестве альтернативы, использование IEnumerable<T> означает, что любая дальнейшая обработка выполняется на стороне клиента.

Вместо того, чтобы сосредоточиться на том, какой тип возвращаемого значения использовать, я предлагаю вам ознакомиться с основными понятиями LINQ (и самими языковыми усовершенствованиями, такими как var) - так вы получите лучшее представление о почему эти опции существуют, и каковы их различные варианты использования.

...