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

问题描述 投票:0回答:1

我试图在我的项目中使用来自https://github.com/bbraithwaite/RepoWrapper/blob/master/DynamicQuery.cs的方法GetDynamicQuery,我也有实现方法GetCriteriaList()“Code_1”的抽象类。我把它称为“Code_2”,它的工作正常。

Code_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;
        }
    }

CODE_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".

我怎么解决它?

c# linq lambda expression
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.