Linq: Считать таблицу несущественной в операторе if, даже если таблица пуста - PullRequest
0 голосов
/ 29 марта 2012

Я делаю простой запрос linq, как это:

    Dim r = (From p In db.Product _
             Where p.Product_ID = ProductID _                   
             Select p)

    If (r IsNot Nothing) Then
          'doing stuff here
    End If

Моя проблема в том, что если запрос возвращает пустую таблицу (я тоже пытался с подсчетом), он считает таблицу не пустой и выполняет код внутри "if" ...

Есть идеи, откуда это?

Ответы [ 3 ]

1 голос
/ 29 марта 2012

Linq всегда будет что-то возвращать из этого.Даже если это пустой IEnumerable (Of T).Попробуйте переключить If на If r.Any() Then и посмотрите, дает ли это вам требуемое поведение.

0 голосов
/ 29 марта 2012

Попробуйте выполнить запрос следующим образом. Я когда-то был далеко от VB, так что извините за синтаксические ошибки;)

Dim r = (From p In db.Product _
         Where p.Product_ID = ProductID _                   
         Select New(){productid = p.Product_ID}).ToList()

If (r.Count() > 0) Then
      'doing stuff here
End If
0 голосов
/ 29 марта 2012

Если вы хотите, чтобы этот код был внутри оператора if, выполнялся только в том случае, если запрос вернул некоторые значения, вы должны использовать что-то подобное:

If (r IsNot Nothing AndAlso r.Any()) Then
          'doing stuff here
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...