【问题标题】:Checking if a variable is empty c#检查变量是否为空c#
【发布时间】:2011-06-17 08:36:38
【问题描述】:

我有一个非常基本的问题,但它是我的疯子!!!!

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

【问题讨论】:

    标签: c# .net linq variables null


    【解决方案1】:

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

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

    if (qry.Any())
    

    【讨论】:

    • +1,因为这绝对是对所提问题的最直接、最准确的答案。
    【解决方案2】:

    假设应该返回一个值 - 如果是这样,那么:

    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
    }
    

    【讨论】:

      【解决方案3】:
      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
      }
      

      【讨论】:

        【解决方案4】:

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

        如果结果都打算是单个值,并且您从单个属性中获取它,我有一些 cmets。

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

        【讨论】:

        • 如果您打算将代码块放在列表项中,每行缩进 8 个空格而不是 4 个。如果您想将代码块直接放在列表之后但不作为列表的一部分,我应该认为您可以使用 HTML 注释将它们分解。
        • @Bolt +1 谢谢。有点笨拙,但考虑到 Markdown 有多么神奇,我会接受它。
        猜你喜欢
        • 2012-02-05
        • 2011-03-20
        • 2021-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多