Подтвердить что ты не робот

Как узнать, возвращает ли мой запрос linq значение null

У меня есть этот запрос linq:

var myQuery = from Q in myDataContext
          select Q.Name

и когда я пытаюсь это сделать:   listView.ItemsSource = myQuery

он иногда выдает исключение, потому что в myQuery

нет элементов.

Я пробовал много способов: if(myQuery.count!=0) или if(myQuery.Any()) но ничего не сработало, так как я могу определить, возвращает ли мой запрос null?

4b9b3361

Ответ 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())...