我發現這個函數(對於「where in」查詢表達式),我想使用它,但是有一些錯誤,我不知道爲什麼,因爲我在很多論壇看到了這個函數,它應該工作...實體表達式錯誤
static Expression<Func<TElement, bool>> BuildContainsExpression<TElement, TValue>(
Expression<Func<TElement, TValue>> valueSelector, IEnumerable<TValue> values)
{
if (null == valueSelector) { throw new ArgumentNullException("valueSelector"); }
if (null == values) { throw new ArgumentNullException("values"); }
ParameterExpression p = valueSelector.Parameters.Single();
// p => valueSelector(p) == values[0] || valueSelector(p) == ...
if (!values.Any())
{
return e => false;
}
var equals = values.Select(value => (Expression)Expression.Equal(valueSelector.Body, Expression.Constant(value, typeof(TValue))));
var body = equals.Aggregate<Expression>((accumulate, equal) => Expression.Or(accumulate, equal));
return Expression.Lambda<Func<TElement, bool>>(body, p);
}
的錯誤是:
'System.Collections.ObjectModel.ReadOnlyCollection' 不包含定義 '單',沒有擴展方法 '單' 接受第一個參數爲 類型 「System.Collections.ObjectModel.ReadOnlyCollection」 可以發現(使用指令或程序集 引用是否缺少 ?)
「System.Collections.Generic.IEnumerable」 不包含定義 「任意」和沒有擴展方法「任意」 接受類型的第一個參數 「System.Collections.Generic.IEnumerable」 可以發現(使用指令或程序集 參考是否缺少 ?)
任何人都可以幫助我嗎? 預先感謝您。
你確定你已經安裝了.NET Framework 3.5 Service Pack 1的? – Devart 2010-12-08 16:49:16