c# - if/else 变量声明和对象在当前上下文错误中不存在

标签 c# .net conditional-statements

我有以下代码声明两个变量然后执行查询。无论如何都会创建变量,所以当查询即将执行时,我很惊讶地得到一个 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.Valueto_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/

相关文章:

c# - SQL VS 前端处理

c# - 创建复合关键 Entity Framework

c# - 如何使用 JsonObject 类?

python - 如何通过将 pandas Dataframe 列与 Set 进行比较来创建新列表

MySQL合并一些空值,而不是全部空值

c# - 当线程被杀死时如何杀死播放循环?

c# - 创建用于测试 Windows.Web.Http.HttpClient 的模拟 IHttpFilter

c# - 在数据库中存储连接字符串

c# - 将 DateTime 转换为 long,反之亦然

exception-handling - 用于报告和处理 clojure 代码中的错误的 JVM 异常有哪些替代方法?