Я работаю над веб-сервисом. Я использую linq для запроса базы данных. Казалось бы, просто, но я столкнулся с проблемой. Вот мой код для справки:
List<Comment> res = new List<Comment>();
using (ApplicationHistoryEntities ahe = new ApplicationHistoryEntities())
{
res = (from columns in ahe.Comments
where columns.NetforumId == actionuniqueid
select columns).ToList();
}
Если у меня нет записей в базе данных, мой .ToList () выдаст ошибку? Я мог бы развернуть его и просто попробовать, но я хочу узнать больше о механизме, который использует мой linq. Если в базе данных ahe.Comments нет строк ... что вернет секция (from ...)?
Я мог бы просто добавить нулевую проверку ссылок, использовать динамику и т. Д., Но я действительно хочу это понять.
Я нашел это Q: как узнать, возвращает ли мой запрос linq значение NULL , но кажется, что все ответы противоречат тому, как это действительно должно быть сделано ...
пример ответов:
- Либо вы можете преобразовать его в список, а затем проверить счет
- Наилучший подход - проверить, что в списке есть ноль (нет элементов), используйте Any () вместо count ()
- LINQ-запросы никогда не должны возвращать ноль, и вы не должны получать исключение, если результат пустой. Возможно, в вашем коде есть ошибка.
- Вы можете реализовать результат в виде списка, а затем проверить элементы.
Вы можете понять, почему я спрашиваю, как это работает.
Edit:
Конечный код выглядит так:
List<Comment> res;
using (ApplicationHistoryEntities ahe = new ApplicationHistoryEntities())
{
res = ahe.Comments?.Where(rowItem => rowItem.NetforumId == actionuniqueid).ToList() ??
new List<Comment>().ToList();
}