Как узнать, возвращает ли мой запрос linq значение null
У меня есть этот запрос linq:
var myQuery = from Q in myDataContext
select Q.Name
и когда я пытаюсь это сделать: listView.ItemsSource = myQuery
он иногда выдает исключение, потому что в myQuery
нет элементов.
Я пробовал много способов: if(myQuery.count!=0)
или if(myQuery.Any())
но ничего не сработало, так как я могу определить, возвращает ли мой запрос null?
Ответы
Ответ 1
Вы можете реализовать результат в виде списка:
var myQuery = (from Q in myDataContext select Q.Name).ToList();
Теперь вы можете проверить количество элементов:
if (myQuery.Count > 0) ...
Вы также можете использовать метод Count()
в исходном запросе, но тогда вы будете запускать запрос дважды, один раз для подсчета элементов и один раз, чтобы использовать их.
Ответ 2
Запросы LINQ никогда не должны возвращать null, и вы не должны получать исключение, если результат пуст. Вероятно, в вашем коде есть ошибка.
Похоже, что в коде, который вы опубликовали, отсутствует имя таблицы. Вы уверены, что код, который вы отправили, является кодом, который дает вам проблемы?
Ответ 3
Либо вы можете преобразовать его в список, а затем проверить счетчик
var result = (from Q in myDataContext select Q.Name).ToList();
if(result.Count > 0)
{
// Perform some operation
}
или вы можете выполнить нулевую проверку, поскольку по умолчанию запросы linq возвращают null вместо пустого списка.
var result = (from Q in myDataContext select Q.Name);
if(result != null)
{
// Perform some operation
}
Ответ 4
вы можете попробовать это
var myQuery = from Q in myDataContext
if(myQuery != null )
{
// TO SOME THING HERE
}
или вы можете дополнительно проверить, что вроде бы, если в результате есть список
var myQuery = from Q in myDataContext
if(myQuery != null && myQuery.Count > 0 )
{
// TO SOME THING HERE
}
Ответ 5
Лучший подход заключается в проверке наличия нулевого (без элементов) в списке использования Any() вместо count()
var myQuery = (из Q в myDataContext выберите Q.Name).ToList();
Теперь вы можете проверить количество элементов:
if (myQuery.Any())...