我有一个方法可以接受一个可选的int?
值作为来自集合的Take
的一些项目。如果传递空值,我想返回所有项目。现在我必须复制我的查询来完成这个
if(take == null)
{
x = db.WalkingDeadEps.Where(x => x.BicyclesCouldHaveSavedLives == true).ToList()
}
else
{
x = db.WalkingDeadEps.Where(x => x.BicyclesCouldHaveSavedLives == true).Take(take).ToList()
}
有更简单的方法吗?像这样的东西?
.Take(take != null ? take : "all")
答案 0 :(得分:5)
您可以选择将查询存储在变量中。在您调用ToList
或等效方法之前,它不会被执行。
var query = db.WalkingDeadEps.Where(x => x.BicyclesCouldHaveSavedLives == true);
x = take.HasValue ? query.Take(take.Value).ToList() : query.ToList();