как узнать, возвращает ли мой запрос linq значение NULL - PullRequest
15 голосов
/ 09 ноября 2010

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

var myQuery = from Q in myDataContext
          select Q.Name

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

иногда выдается исключение, потому что в * 1006 нет элементов*

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

Ответы [ 5 ]

17 голосов
/ 09 ноября 2010

Вы можете реализовать результат в виде списка:

var myQuery = (from Q in myDataContext select Q.Name).ToList();

Теперь вы можете проверить количество предметов:

if (myQuery.Count > 0) ...

Вы также можете использовать метод Count() в исходном запросе, но тогда вы будете выполнять запрос дважды: один раз для подсчета элементов и один раз для их использования.

4 голосов
/ 09 ноября 2010

LINQ-запросы никогда не должны возвращать ноль, и вы не должны получать исключение, если результат пустой. Возможно, в вашем коде есть ошибка.

Похоже, что в опубликованном вами коде отсутствует имя таблицы. Вы уверены, что код, который вы разместили, является кодом, который вызывает у вас проблемы?

2 голосов
/ 04 декабря 2013

Либо вы можете преобразовать его в список, а затем проверить счетчик

var result = (from Q in myDataContext select Q.Name).ToList();
if(result.Count > 0)
{
 // Perform some operation
}

, либо выполнить нулевую проверку, поскольку по умолчанию запросы linq возвращают ноль вместо пустого списка.

var result = (from Q in myDataContext select Q.Name);
if(result != null)
{
 // Perform some operation
}
0 голосов
/ 22 сентября 2015

Лучший подход - проверить, что в списке есть ноль (нет элементов), используйте Any () вместо count ()

var myQuery = (из Q в myDataContext выберите Q.Name) .ToList ();Теперь вы можете проверить количество элементов:

if (myQuery.Any ()) ...

0 голосов
/ 09 ноября 2010

вы можете попробовать это

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...