使用三元运算符赋值给表达式
本文关键字:运算符 赋值 表达式 三元 | 更新日期: 2023-09-27 18:07:36
我想知道为什么第一个是OK的,
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;
在第二个,我收到错误"无法解析符号'Id'"。在这种情况下,我不明白为什么"w"没有被解析为我的类"Foo",因为左边的表达式定义包含了这些信息。
谢谢。
您的语句有几个问题。
首先,符号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;