Проверка пустоты переменной c#

у меня есть довольно простой вопрос, но он делал свою гайку!!!!

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

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

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 ответов


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

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
}

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

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

if (qry.Any())

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
}

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

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

  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)
{
    //...
}