我有下面的代码,我需要一些帮助来修复。我想要的是将一个字符串表达式和一个字符串 [] 参数传递给此方法,并将表达式编译并应用于列表中的各个项目。
public static IEnumerable<T> ForEach<T>(this IList<T> source, string expression, params object[] values)
{
if (source == null) throw new ArgumentNullException("source");
if (expression == null) throw new ArgumentNullException("expression");
var enumerableList = source.AsEnumerable<T>();
return (from T item in source
select (T) DynamicLambdaExpression.ParseLambda(item.GetType(), typeof(T), expression, values).Compile().DynamicInvoke(item));
}
照原样,可能正在应用表达式,但每个操作返回的类型不是我期望的类型。不确定,因为我在运行它时遇到异常。
<IfTrue Expression="it.UID = @0 + it.index.ToString(@1)" Parameters="000000 D6"/>
我不断收到的错误消息说
System.Linq.Dynamic.ParseException 发生 HResult=-2146233088 消息=“IProductDetail”类型的表达式预期源=动态位置=0 StackTrace:在 System.Linq.Dynamic.ExpressionParser.Parse(类型 resultType)
因此,我将不胜感激在修复代码方面的任何帮助,并请解释我做错了什么。提前致谢。