检查变量是否为空c#

时间:2011-06-17 08:36:38

标签: c# .net linq variables null

我有一个非常基本的问题,但它正在努力!!!!

我创建了一个变量来检查我的数据表检查,看看是否已经存在使用我的页面控件ID的项目。如果它,我想警告我的用户他们已经选择了页面颜色!

我的问题是如何检查此变量是否为空!

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 个答案:

答案 0 :(得分:17)

据我所知,查询表达式不会返回null。如果没有结果,您只需获得IQueryable<T>,但内部没有T

您可以使用它来查看结果集中是否有任何内容:

if (qry.Any())

答案 1 :(得分:6)

假设应返回单个值 - 如果是,则:

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
}

答案 2 :(得分:0)

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
}

答案 3 :(得分:0)

我打算写这个作为对另一个答案的回应,但它真的太大了。这或多或少是对Nathan的回答。

如果结果既是单个值又是单个属性,那么我会有一些评论。

  1. 没有理由使用匿名对象来选择单个值。
  2. 如果您发现自己在括号中包含查询样式语句以在结果上使用点样式,您可能会考虑使用点样式。
  3. 根据您的数据选择FirstOrDefaultSingleOrDefault。有时与隐含断言结果是“一个或全无”与“第一件事或无事件”有关。
  4. var result = db.DT_Control_ColourPalette_PageColors
                   .Where(x => x.PageControlID == int.Parse(HF_CPID.Value))
                   .Select(x => x.PageControlID)
                   .SingleOrDefault();
    
    if (result != null)
    {
        //...
    }