Ну, вы никогда не сможете объявить , что метод возвращает var
- он действителен только для локальных переменных. Это в основном означает «компилятор, пожалуйста, определите статический тип этой переменной на основе выражения в правой части оператора присваивания».
Обычно запрос LINQ to Objects возвращает IEnumerable<T>
, если он возвращает последовательность некоторого вида, или просто один экземпляр для таких вещей, как First()
.
Для запроса LINQ to SQL или EF будет использоваться IQueryable<T>
, если они хотят, чтобы дополнительные параметры запроса могли основываться на существующем запросе, а добавленные биты анализировались как часть процесса построения SQL. В качестве альтернативы, использование IEnumerable<T>
означает, что любая дальнейшая обработка выполняется на стороне клиента.
Вместо того, чтобы сосредоточиться на том, какой тип возвращаемого значения использовать, я предлагаю вам ознакомиться с основными понятиями LINQ (и самими языковыми усовершенствованиями, такими как var
) - так вы получите лучшее представление о почему эти опции существуют, и каковы их различные варианты использования.