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

时间:2010-07-06 21:09:45

标签: c# linq

if(){...}
else{...}
            if ( query.Count > 0 ){...}

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

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

2 个答案:

答案 0 :(得分:2)

在if-else:

之前声明变量
//replace var with the actual type, of course
var query;
if(){...}
else{...}

if (query.Count > 0){...}

答案 1 :(得分:0)

问题是“查询”变量的范围需要大于您定义“查询”的范围。

但是既然你已经使用了var,那么在有足够的信息让编译器选择类型之前你不能声明“查询”。

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

IEnumerable<Customer> query = null;

if ()
{
  query = ...
}
else
{
  query = ...
}

if (query.Any())

Linq中的任何内容都不取决于var关键字的使用。详细了解var here