有没有办法合并if
和else
部分中的查询?
public List<MyClass> GetData(Category category, bool flag= true)
{
IQueryable<MyClass> result;
if (flag)
{
result = Session.All<MyClass>()
.Where(mc => mc.Col.Equals(category.ToString()) && mc.FLAG);
}
else
{
result = Session.All<MyClass>()
.Where(mc => mc.Col.Equals(category.ToString()));
}
return result.ToList();
}
答案 0 :(得分:25)
不确定
given_optimizer.compute_gradients(total_loss)
given_optimizer.apply_gradients(grads)
您可以通过制作允许result = Session.All<MyClass>()
.Where(mc => mc.Col.Equals(category.ToString()) && (!flag || mc.FLAG));
结果的矩阵来确定重写逻辑:
true
如果▼ mc.FLAG ► flag
true false
true valid valid
false invalid valid
为假(两者都等于flag
)或true
为mc.FLAG
,则表示条件有效。
我还建议首先进行标记检查,因为这是性能更好的谓词。如果第一个结果为false,这可能会阻止第二次检查:
true
答案 1 :(得分:21)
您可以有条件地链接Where
。
public List<MyClass> GetData(Category category, bool flag = true)
{
var result = Session.All<MyClass>()
.Where(mc => mc.Col.Equals(category.ToString()));
if (flag) {
result = result.Where(mc => mc.FLAG);
}
return result.ToList();
}