我有以下代码声明两个变量然后执行查询。无论如何都会创建变量,所以当查询即将执行时,我很惊讶地得到一个 object does not exist in current context error
。我怎么能做这样的事情?它已经发生了好几次。我还尝试在变量声明中使用 if/else 语句,但没有奏效。 (然后我得到错误 invalid expression if
)我需要说什么才能让它起作用?
if (from_date == null) {
var from_date_choose = DateTime.Today.AddDays(-30);
} else {
var from_date_choose = from_date;
}
if (to_date == null) {
var to_date_choose = DateTime.Today;
} else {
var to_date_choose = to_date;
}
var voyages = db.Voyages
.Where(v => v.ArrivalDatetime >= from_date_choose)
.Where(v => v.ArrivalDatetime <= to_date_choose);
最佳答案
像这样修改代码,否则你的变量只存在于本地范围内。您还需要使用 from_date.Value
和 to_date.Value
(我假设这些是 Nullable<DateTime>
类型):
DateTime from_date_choose;
if (from_date == null) {
from_date_choose = DateTime.Today.AddDays(-30);
} else {
from_date_choose = from_date.Value;
}
DateTime to_date_choose;
if (to_date == null) {
to_date_choose = DateTime.Today;
} else {
to_date_choose = to_date.Value;
}
var voyages = db.Voyages
.Where(v => v.ArrivalDatetime >= from_date_choose)
.Where(v => v.ArrivalDatetime <= to_date_choose);
你也可以使用三元运算符,例如:
DateTime from_date_choose = from_date == null ? DateTime.Today.AddDays(-30) : from_date.Value;
或者正如 Jeppe Stig Nielsen 建议的那样使用合并运算符,例如:
DateTime from_date_choose = from_date ?? DateTime.Today.AddDays(-30);
关于c# - if/else 变量声明和对象在当前上下文错误中不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17885046/