I'm using C# 2010 .NET 4.0 and I have a List<T> collection returns that i needing to build a dynamic LINQ query on.
I'm utilizing the Predicate Builder referenced here
This works fine if I have 1 filter criteria, but if i have 2 or more, then, when the query.compile() is called, i get this error:
variable 'tmp' of type 'Check21Tools.IncomingReturn' referenced from scope '', but it is not defined
Code:
Code:
Expression<Func<Check21Tools.IncomingReturn, bool>> query = null;
bool hasFilterItems = false;
if (filterArray != null)
{
foreach (string s in filterArray)
{
if (s == string.Empty)
{ break; }
else
{
hasFilterItems = true;
Int64 id = Int64.Parse(s);
query = query.Or(tmp => tmp.ID == id);
}
}
}
if (hasFilterItems)
{
returns = returns.Where(query.Compile()).CreateFromEnumerable<Check21Tools.IncomingReturns, Check21Tools.IncomingReturn>();
}
Code:
Code:
public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1,
Expression<Func<T, bool>> expr2)
{
if (expr1 == null) return expr2;
return Expression.Lambda<Func<T, bool>>
(Expression.OrElse(expr1.Body, expr2.Body), expr1.Parameters);
}