我正在尝试使用LINQ to SQL Where Clause Optional Criteria
中的答案我喜欢我的linq使用基于查询的语法。不知道如何使用whereif。
我的查询看起来像这样
var result = (from tran in _ctx.Transactions where tran.Id == transactionId select tran);
有时投射
var result = (from tran in _ctx.Transactions where tran.Id == transactionId
select new Abstract
{
tran.Date,
tran.Key
});
我可以使用方法语法
执行可选过滤器var result = _ctx.Transactions
.where(t=>t.Id == transactionId)
.whereIf(tran.Dept!= "AllDept", x => x.Dept== deptName);
不确定如何在基于查询的linq查询中使用WhereIf。
答案 0 :(得分:1)
我建议使用PredicateBulder并为你的查询添加谓词,如下所示,这将使用变量谓词动态构建查询
var predicate = PredicateBuilder.True<Transaction>();
predicate = predicate.And(t=>t.Id == transactionId);
if (!string.IsNullOrEmpty(department))
{
predicate = predicate.And(tran => tran.Dept!= "AllDept");
}
var result = _ctx.Transactions.where(predicate);