Проверка, является ли переменная пустой c # - PullRequest
6 голосов
/ 17 июня 2011

У меня довольно простой вопрос, но я делаю это безумно !!!!

Я создал переменную, которая проверяет мои таблицы данных, проверяет, существует ли уже элемент, использующий мой идентификатор элемента управления страницы. Если это так, то я хочу предупредить моего пользователя, что он уже выбрал цвет страницы!

Мой вопрос: как мне проверить, пуста ли эта переменная или нет!

var qry = from x in db.DT_Control_ColourPalette_PageColors
                  where x.PageControlID == int.Parse(HF_CPID.Value)
                  select new
                  {
                      x.PageControlID,
                  };

Аргумент, который я считаю правильным?

if (qry !=null)

Ответы [ 4 ]

17 голосов
/ 17 июня 2011

Выражения запроса не возвращают ноль, насколько я знаю.Если результатов нет, вы просто получаете IQueryable<T> без T s внутри.

Вместо этого вы можете использовать это, чтобы увидеть, есть ли что-либо в наборе результатов:

if (qry.Any())
6 голосов
/ 17 июня 2011

при условии, что должно возвращаться одно значение - если так, то:

var qry = (from x in db.DT_Control_ColourPalette_PageColors
                  where x.PageControlID == int.Parse(HF_CPID.Value)
                  select new
                  {
                      x.PageControlID,
                  }).FirstOrDefault();

if(qry != null)
{
   // do stuff
}
0 голосов
/ 17 июня 2011

Я собирался написать это как ответ на другой ответ, но он действительно слишком велик для этого. Это более или менее в ответ на ответ Натана.

Если результат предназначен для одного значения, а вы получаете его из одного свойства, у меня есть несколько комментариев.

  1. Нет причин использовать анонимный объект для выбора одного значения.
  2. Если вы обнаружите, что заключили в скобки оператор типа запроса, чтобы использовать стиль точки в результате, вы можете подумать о переходе на точку.
  3. Выберите между FirstOrDefault и SingleOrDefault в зависимости от ваших данных. Иногда уместно неявно утверждать, что результатом является «один или ничего» по сравнению с «первым из чего-то или ничего».
var result = db.DT_Control_ColourPalette_PageColors
               .Where(x => x.PageControlID == int.Parse(HF_CPID.Value))
               .Select(x => x.PageControlID)
               .SingleOrDefault();

if (result != null)
{
    //...
}
0 голосов
/ 17 июня 2011
var qry = from x in db.DT_Control_ColourPalette_PageColors
                  where x.PageControlID == CheckValue(HF_CPID.Value)
                  select new
                  {
                      x.PageControlID,
                  };


private int CheckValue(sting str)
{
  if(!string.IsNullOrEmpty(str))
  {
    return int.Parse(str);
   }
 else
  return 0;//or your default value you want to return
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...