作者:手机用户2602922511 | 来源:互联网 | 2024-12-25 16:35
我有一个条件判断,如下所示:
List sessiOns= new List();
foreach (var item in fileInfo)
{
var query = _db.HWSRunSessions
.Where(x => x.TransferredZipName == item.Name
&& DateTime.Now.Subtract(x.AddedDate).TotalDays >= _ExpirationDays);
if (!query.Any()) {
// 处理逻辑
}
}
但是,我希望将查询结果保存到 sessions
变量中,以便后续使用。一种常见且高效的方法是先将查询结果存储在一个临时变量中,然后再进行条件判断:
foreach (var item in fileInfo)
{
var session = _db.HWSRunSessions
.FirstOrDefault(x => x.TransferredZipName == item.Name
&& DateTime.Now.Subtract(x.AddedDate).TotalDays >= _ExpirationDays);
if (session == null)
{
// session is null, handle accordingly
}
else
{
// do something with session
sessions.Add(session);
}
}
这种方法不仅提高了代码的可读性,还便于调试和维护。
如果您确实需要在表达式中分配变量,可以采用以下方式,但请注意这会使代码更难阅读,并可能增加错误风险:
Session session = null;
if ((session = _db.HWSRunSessions
.FirstOrDefault(x => x.TransferredZipName == item.Name
&& DateTime.Now.Subtract(x.AddedDate).TotalDays >= _ExpirationDays)) == null)
{
// session is null, handle accordingly
}
else
{
// do something with session
}
需要注意的是,`Where` 方法总是返回一个非空的集合(即使没有匹配项),因此通常需要结合 `Any()` 或 `FirstOrDefault()` 等方法来确保正确处理。