Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在上下文中找不到可查询变量_C#_Linq - Fatal编程技术网

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

C# 在上下文中找不到可查询变量,c#,linq,C#,Linq,上面显示的骨架与我使用的骨架相似。在第一个if-then-else序列中,我初始化了一个名为query的查询变量(在LINQ中使用),然后在下一个if-语句中检查它。但环境仍然表示查询不在当前上下文中显示。如果单独使用If-then语句中的代码,则不会发现任何问题。在我看来,问题在于变量的初始化。你还有其他建议吗 如果您知道如何使用null值初始化一个要用link查询的变量,我也很高兴听到这个消息。谢谢大家! 在if-else之前声明变量: if(){...} else{...}

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


如果您知道如何使用null值初始化一个要用link查询的变量,我也很高兴听到这个消息。谢谢大家!

在if-else之前声明变量:

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

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

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

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

IEnumerable查询=null;
如果()
{
查询=。。。
}
其他的
{
查询=。。。
}
if(query.Any())


Linq中的任何内容都不依赖于
var
关键字的使用。了解更多关于
var

什么是真正的类…我希望变量包含一个列表(或者在本例中是它的第一个条目。因此它是iVariable类型。不允许使用var query;,因为它不是真正的初始化。通常,它是
IEnumerable
,其中T是您要获取的任何内容。
//replace var with the actual type, of course
var query;
if(){...}
else{...}

if (query.Count > 0){...}
IEnumerable<Customer> query = null;

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

if (query.Any())