gpt4 book ai didi

c# - LINQ 查询和上下文

转载 作者:行者123 更新时间:2023-11-30 13:52:12 26 4
gpt4 key购买 nike

我写的一些代码有一个小问题

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

所以基本上发生的事情是变量“linq”根据“parameter”的值而不同。当我尝试使用我的 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;
}

在您的特定示例中,您可以简化事情:

var query = from a in db.table select a;
if (parameter != 1)
{
query = query.Where(a => a.id == 1);
}

关于c# - LINQ 查询和上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3000847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com