c# - C# lambda 返回 System.Linq.Expressions.Expression 的问题
问题描述
我在分配以下代码时遇到了一个大问题,我不知道如何解决它,我想使用 lambda 运算符。
System.Linq.Expressions.Expression expression = null;
if (typeof(ICustomTypeDescriptor).IsAssignableFrom(sourceType))
{
System.Linq.Expressions.Expression expression2 = System.Linq.Expressions.Expression.Convert(parameterExpression, typeof(ICustomTypeDescriptor));
expression = (ICustomTypeDescriptor t, object o) =>
{
t.GetProperties()[propertyName].GetValue(o)
}
;
return System.Linq.Expressions.Expression.Invoke(expression, new System.Linq.Expressions.Expression[]
{
expression2,
parameterExpression
});
}
问题在于这部分 在此处输入图像描述
可以用其他方式声明吗?
错误
无法将 lambda 表达式元素转换为“表达式”类型,因为它不是委托类型
解决方案
You are using multilines lambda expression, which is ok. But you need to end each line with ";".
I think this would work but without the whole code it will be hard to be sure :
System.Linq.Expressions.Expression expression = null;
if (typeof(ICustomTypeDescriptor).IsAssignableFrom(sourceType))
{
System.Linq.Expressions.Expression expression2 = System.Linq.Expressions.Expression.Convert(parameterExpression, typeof(ICustomTypeDescriptor));
expression = (ICustomTypeDescriptor t, object o) =>
{
t.GetProperties()[propertyName].GetValue(o);
};
return System.Linq.Expressions.Expression.Invoke(expression, new System.Linq.Expressions.Expression[]
{
expression2,
parameterExpression
});
}
You can also go for singleline lambda :
System.Linq.Expressions.Expression expression = null;
if (typeof(ICustomTypeDescriptor).IsAssignableFrom(sourceType))
{
System.Linq.Expressions.Expression expression2 = System.Linq.Expressions.Expression.Convert(parameterExpression, typeof(ICustomTypeDescriptor));
expression = (ICustomTypeDescriptor t, object o) => t.GetProperties()[propertyName].GetValue(o);
return System.Linq.Expressions.Expression.Invoke(expression, new System.Linq.Expressions.Expression[]
{
expression2,
parameterExpression
});
}
Please care, I haven't tested the code to check if I'm not wrong.
推荐阅读
- database - 如何打开oracle数据库?
- python - 根据条件连接熊猫中的行
- tensorflow - 关于 Tensorflow 扩展 BigQuery 作为 ExampleGen 的问题
- python - Airflow PythonVirtualOperator 用简单的例子抛出错误
- amazon-web-services - Route 53 配置 S3 url
- react-native - 我想使用在渲染之前初始化的组件生命周期方法
- redis - Redis:在管道中使用一个 mset 操作和一堆过期操作,或者在管道中使用一堆过期的 set 操作
- java - 如何判断 OpenJDK 是否安装了调试符号
- cas - 如何将属性放入 sping-webflow 流 xml
- r - R 按行计算列中特定出现的次数并填充显示增量出现的列