【发布时间】:2017-10-07 13:10:40
【问题描述】:
相关:
Create a Lambda Expression With 3 conditions
Convert Contains To Expression Tree
在我之前的问题中,我遇到了这个我想写Expression Tree版本的查询:
List<byte?> lst = new List<byte?>{1,2};
from a in myTbl
where a.Age = 20 && lst.Contains(a.Status)
select a
我写了这段代码:
List<byte?> lst = new List<byte?>{1,2};
var param = Expression.Parameter(typeof(T), "o");
var body = Expression.AndAlso(
Expression.Equal(
Expression.PropertyOrField(param, "Age"),
Expression.Constant(20)
),
Expression.Call(Expression.PropertyOrField(param, "Status"),
"Contains",
Type.EmptyTypes,
Expression.Constant(lst)));
var lambda = Expression.Lambda<Func<T, bool>>(body, param);
return lambda;
我得到了错误:
“'System.Nullable`1[System.Byte]' 类型上不存在方法 'Contains'。”
请帮我找出问题。
谢谢
【问题讨论】:
标签: c# linq lambda expression-trees