保存“If 语句”的输出 c#

问题描述

我有一个这样的条件:

List<HWSRunSession> session = new List<HWSRunSession>();
foreach (var item in fileInfo)
{
    if(_db.HWSRunSessions.Where((x) => x.TransferredZipName == item.Name 
    && DateTime.Now.Subtract(x.AddedDate).TotalDays >= _ExpirationDays) == null) {
     bla bla...
    }        
}

但我想使用“out”关键字将我在条件中检索到的列表保存到我的变量 session 中。有点像:

List<HWSRunSession> session = new List<HWSRunSession>();
foreach (var item in fileInfo)
{
    if(_db.HWSRunSessions.Where((x) => x.TransferredZipName == item.Name 
    && DateTime.Now.Subtract(x.AddedDate).TotalDays >= _ExpirationDays),out session == null) {



    }
}

这可能吗?如果可能,怎么办?

解决方法

最具可读性和可维护性的解决方案是将结果存储在一个变量中,然后在条件中测试这个变量:

    def __init__(self,min_value=None,max_value=None,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.child_blocks["from_"].min_value = min_value
        self.child_blocks["to"].max_value = max_value

如果您绝对必须在表达式中分配一个变量,这是可能的。但它使代码更难阅读,更容易遗漏错误:

var session = _db.HWSRunSessions
    .Where((x) => x.TransferredZipName == item.Name 
       && DateTime.Now.Subtract(x.AddedDate).TotalDays >= _ExpirationDays)
    .FirstOrDefault();
if(session == null)
{
  // session is null
}
else
{
  // do something with session
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...