Ответ 1
Он вернет пустое перечисление. Это не будет null. Вы можете спать звук:)
У меня вопрос о запросе LINQ. Обычно запрос возвращает тип IEnumerable. Если возврат пуст, не уверен, что оно равно null или нет. Я не уверен, что следующий ToList() будет генерировать исключение или просто пустой список <string> если ничего не найдено в результате IEnumerable?
List<string> list = {"a"};
// is the result null or something else?
IEnumerable<string> ilist = from x in list where x == "ABC" select x;
// Or directly to a list, exception thrown?
List<string> list1 = (from x in list where x == "ABC" select x).ToList();
Я знаю, что это очень простой вопрос, но пока у меня нет VS.
Он вернет пустое перечисление. Это не будет null. Вы можете спать звук:)
Вы также можете проверить метод .Any()
:
if (!YourResult.Any())
Просто обратите внимание, что .Any
все равно будет извлекать записи из базы данных; выполнение .FirstOrDefault()/.Where()
будет таким же накладным, но вы могли бы поймать объект (ы), возвращенный из запроса
var lst = new List<int>() { 1, 2, 3 };
var ans = lst.Where( i => i > 3 );
(ans == null).Dump(); // False
(ans.Count() == 0 ).Dump(); // True
(Дамп от LinqPad)
.ToList возвращает пустой список. (так же, как новый List());
В Linq-to-SQL, если вы попытаетесь получить первый элемент запроса без результатов, вы получите ошибку sequence contains no elements
. Я могу заверить вас, что указанная ошибка не равна object reference not set to an instance of an object
.
в заключении нет, он не будет возвращать null, так как null не может сказать sequence contains no elements
он всегда будет говорить object reference not set to an instance of an object
;)
Другие сообщения здесь дали понять, что результатом является "пустой" IQueryable, который ToList() будет корректно изменен как пустой список и т.д.
Будьте осторожны с некоторыми из операторов, поскольку они будут бросать, если вы отправляете им пустую перечислимую. Это может произойти, когда вы соединяете их вместе.
Он не будет генерировать исключение, вы получите пустой список.