Convert List.Contains to Expression Tree

前端 未结 2 815
情歌与酒
情歌与酒 2021-01-27 13:19

Related To:

Create a Lambda Expression With 3 conditions

Convert Contains To Expression Tree

In the following of my previous question I faced with this

2条回答
  •  南笙
    南笙 (楼主)
    2021-01-27 13:39

    The problem is that you have switched two arguments to Expression.Call, your code is trying to create the nonsensical expression o.Status.Contains(lst).

    You need to switch the two arguments around:

    Expression.Call(Expression.Constant(lst),
        "Contains",
        Type.EmptyTypes, 
        Expression.PropertyOrField(param, "Status"))
    

    This is assuming that the LINQ provider you're using understands List.Contains(). If you need Enumerable.Contains(), then have a look at Ivan Stoev's answer.

提交回复
热议问题