代码之家  ›  专栏  ›  技术社区  ›  Branimir

在上下文中找不到可查询变量

  •  0
  • Branimir  · 技术社区  · 16 年前
    if(){...}
    else{...}
                if ( query.Count > 0 ){...}
    

    上面显示的骨架与我使用的骨架类似。在第一个if-then-else序列中,我初始化一个名为query的查询变量(在LINQ中使用),然后在下一个if-语句中检查它。但环境仍然表示,查询没有在当前上下文中显示。如果单独使用If-then语句中的代码,则不会发现任何问题。在我看来,问题在于变量的初始化。你还有别的建议吗?

    如果你知道如何用空值初始化一个要用link查询的变量-我也很高兴听到这个。谢谢您!

    2 回复  |  直到 8 年前
        1
  •  0
  •   Amy B    16 年前

    问题是“query”变量的作用域需要大于定义“query”的作用域。

    但是由于您已经使用了var,在编译器没有足够的信息来选择类型之前,您不能声明“query”。

    要解决这个问题,只需在所需的范围内声明变量的类型(不要使用var)。

    IEnumerable<Customer> query = null;
    
    if ()
    {
      query = ...
    }
    else
    {
      query = ...
    }
    
    if (query.Any())
    

    Linq中的任何内容都不依赖于 var 关键字。进一步了解 here .

        2
  •  2
  •   Anon.    16 年前

    在if-else之前声明变量:

    //replace var with the actual type, of course
    var query;
    if(){...}
    else{...}
    
    if (query.Count > 0){...}