检查变量是否为空的方法 c#

7

我有一个非常基本的问题,但它却让我很烦恼!

我创建了一个变量,该变量检查我的数据表,以查看是否已经存在使用我的页面控件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个回答

18

据我所知,查询表达式不会返回null。如果没有结果,您只会得到一个没有TIQueryable<T>

您可以使用以下方法来检查结果集中是否有内容:

if (qry.Any())

+1 因为这绝对是对所问问题最直接和准确的回答。 - Shibumi

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
}

1
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
}

0

我本来想把这个作为对另一个答案的回应,但是它太大了。这更多地是对Nathan答案的回应。

如果结果既意图为单一值,而且你从单一属性中获取该值,我有一些评论。

  1. 没有理由使用匿名对象来选择单一值。
  2. 如果你发现自己在括号中包装查询式语句以使用点样式的结果,你可以考虑直接使用点样式。
  3. 根据你的数据选择FirstOrDefaultSingleOrDefault之间的区别。有时候隐含地断言结果是“一个或零”与“第一个或零”的区别是相关的。
var result = db.DT_Control_ColourPalette_PageColors
               .Where(x => x.PageControlID == int.Parse(HF_CPID.Value))
               .Select(x => x.PageControlID)
               .SingleOrDefault();

if (result != null)
{
    //...
}

1
如果您打算将代码块放置在列表项中,请每行缩进8个空格而不是4个。如果您想要在列表直接后面放置一个代码块,但又不想包含在其中,我认为您可以使用HTML注释来分隔它们。 - BoltClock
@Bolt +1 谢谢。有点笨拙,但考虑到 Markdown 的神奇之处,我还是接受了它。 - Shibumi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接