use Expression> in Linq contains extension

后端 未结 3 1768
终归单人心
终归单人心 2020-12-16 04:17

Using the following example i would like to use my Expression inside my Contains method, having it pass the query onto sql server using the EF.

3条回答
  •  眼角桃花
    2020-12-16 05:12

    Isn't the items parameter an IQueryable? If so, try this:

    public static IQueryable FilterByCompany(this IQueryable items, Expression> resolveCompanyExpression)
        where T : EntityBase
    {
        IQueryable validComps = GetCompaniesFromDataBase();
    
        var exp = Expression.Lambda>(
            Expression.Call(
                typeof(Queryable),
                "Contains",
                new[] { typeof(Company) },
                Expression.Constant(validComps),
                resolveCompanyExpression.Body
            ),
            resolveCompanyExpression.Parameters[0]
        );
        return items.Where(exp);
    }
    

提交回复
热议问题