我有下面的代碼,我需要一些幫助修復請。我想要的是向此方法傳遞一個String Expression和一個String []參數,並將Expression編譯並應用於列表中的各個項目。動態ForEach循環更新對象屬性值
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));
}
AS是,表達很可能被應用,但來自每個操作返回的類型不是我期望的類型。不知道,因爲我運行它時遇到異常。
<IfTrue Expression="it.UID = @0 + it.index.ToString(@1)" Parameters="000000 D6"/>
該錯誤消息我不斷收到說
System.Linq.Dynamic.ParseException發生 的HResult = -2146233088 消息=類型的表達式IProductDetail「預計 來源=動態 位置= 0 堆棧跟蹤:在System.Linq.Dynamic.ExpressionParser.Parse(類型與resultType)
所以,我希望得到任何幫助在固定的代碼,並解釋請問我做錯了什麼。提前致謝。
你有什麼錯誤? – SLaks
不要重新編譯列表中每個項目的表達式。 – SLaks
如果您有返回類型,這更像是一個'Select'操作(映射),而不是'ForEach'。你的回報類型將基於你在表達式中傳遞的信息... –