我有一个关于编写 linq 查询的常见做法的问题。事实上,我和我的同事发生了争执。
如果它是真的,我们有一个布尔变量 - 需要额外的检查。如果它是假的,就不应该进行这样的检查。
在 linq 中有两种实现方式:
bool onlyForReturningCustomers;
.....
return context.Products.Where(product => product.StartTime >= fromDate
&& product.StartTime < toDate
&& (onlyForReturningCustomers ? product.IsReturningClient : true));
第二个:
bool onlyForReturningCustomers;
.....
var q = context.Products.Where(product => product.StartTime >= fromDate && product.StartTime < toDate);
if (onlyForReturningCustomers) {
q = q.Where(product => product.IsReturningClient);
}
return q;
第一个case
在 sql 中呈现语句,当onlyForReturningCustomers=false
语句 like1=1
出现但这段代码更容易阅读。
第二个不是那么容易阅读,但它在 sql 中呈现清晰的语句,没有任何垃圾。
你会用哪一个?