如何将linq表达式转换为二进制表达式

时间:2019-04-28 10:28:53

标签: c# linq lambda expression

我尝试在我的项目中使用https://github.com/bbraithwaite/RepoWrapper/blob/master/DynamicQuery.cs中的GetDynamicQuery方法,而且我也有使用实现方法GetCriteriaList()“ Code_1”的抽象类。我这样称呼它为“ Code_2”,效果很好。

代码_1

public abstract class ListFilterModel<T> where T: EntityBase
    {
        [Display(Name="Name", Order=1)]
        public string name { get; set; }
        public string sort { get; set; }
        public string sortdir { get; set; }

        public virtual IList<Predicate<T>> GetCriteriaList()
        {
            List<Predicate<T>> criteriaList = new List<Predicate<T>>();
            return criteriaList;
        }
    }

代码_2

Expression<Func<T, bool>> filtered = c => filterModel.GetCriteriaList().All(pred => pred(c));

接下来,当我将过滤的变量传递到GetDynamicQuery()中时。我在行上出错

var body =  (BinaryExpression)expression.Body;

Unable to cast object type "System.Linq.Expressions.MethodCallExpressionN" to "System.Linq.Expressions.BinaryExpression".

我该如何解决?

0 个答案:

没有答案