我试图理解为什么第一个没问题,
Expression<Func<Foo, bool>> filterExpression = null;
if (id.HasValue) filterExpression = w => w.Id == id.Value;
这个抱怨:
Expression<Func<Foo, bool>> filterExpression = id.HasValue ? w => w.Id == id.Value : null;
在第二个中,我收到错误&#34;无法解析符号&#39; Id&#39;&#34;。我不明白为什么&#34; w&#34;没有解决我的班级&#34; Foo&#34;在这种情况下,由于左侧的表达式定义包含此类信息。
感谢。
答案 0 :(得分:2)
你的陈述有几个问题。
首先,符号w
的类型为MerketNews
,而不是Foo
。
其次,您无法使用(伪)语法
定义表达式[ExpressionType] expr = [boolValue] ? [lambda] : null;
您必须使用
[ExpressionType] expr = [boolValue] ? [lambda] : ([ExpressionType])null;
在你的情况下:
Expression<Func<Foo, bool>> filterExpression = id.HasValue ? w => w.Id == id.Value : (Expression<Func<Foo, bool>>)null;