我写的一些代码有点小问题
if(parameter == 1)
{
var linq = from a in db.table select a;
}
else
{
var linq = from a in db.table where a.id = 1 select a;
}
foreach(var b in linq)
{
...
}
Run Code Online (Sandbox Code Playgroud)
所以基本上发生的是变量"linq"根据"参数"的值而不同.当我尝试使用foreach循环遍历"linq"时,我得到一个关于当前上下文中linq不存在的错误.
解决此类问题的最佳方法是什么?
您尝试的内容不起作用,因为linq当您尝试使用该变量时,该变量已经超出范围.您需要将声明移动到外部范围.
首先以一般方式回答您的问题:如果您需要在分配变量之前声明变量,则无法使用var.您需要明确声明类型:
IQueryable<Something> linq;
if(parameter == 1)
{
linq = from a in db.table select a;
}
else
{
linq = from a in db.table where a.id == 1 select a;
}
Run Code Online (Sandbox Code Playgroud)
在您的特定示例中,您可以简化事情:
var query = from a in db.table select a;
if (parameter != 1)
{
query = query.Where(a => a.id == 1);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1311 次 |
| 最近记录: |