WHERE
LinqKit Predicate Builder を使用して、追加のオプション条件を追加したい linq クエリがあります。ただし、追加の述語を機能させるのに苦労しています
これは私の最初のクエリです:
var query = (from OP in ctx.OrganisationProducts
where OP.OrganisationID == orgID
orderby OP.Product.Name, OP.Product.VersionName
select OP).Include("Product");
ご覧のとおり、そこJOIN
にあります。次に、必要に応じて述語を追加します。
if(!includeDisabledP42Admin || !includeDisabledOrgAdmin)
{
var pred = PredicateBuilder.True<OrganisationProduct>();
if (!includeDisabledP42Admin)
pred.And(op => op.Enabled);
if (!includeDisabledOrgAdmin)
pred.And(op => op.AccessLevel == "NA" || op.AccessLevel == "NU");
query = query.Where(pred);
}
ただし、生成された SQL は変更されず、クエリは同じ数の行を返します。
次のように Expand 変換を行う必要があるかもしれないと思いました。
query = query.AsExpandable().Where(pred);
しかし、これは実行時エラーを引き起こします。
問題は、すでに純粋なオブジェクトではないクエリに述語を追加していることだと思いますがOrganisationProduct
、適切な場所に述語を挿入する方法についてアドバイスをお願いします。
ありがとう、そしてみんな:-)