컴퓨터 프로그래밍/ASP.NET / Silverlight / MSSQL
C#, LINQ IQueryable.Where의 조건을 쉽게 만들기
orange code
2010. 1. 1. 15:08
http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/925b245d-5529-4a64-8cd4-4bc83ee6fe7a/
public static class PredicateBuilder
{
public static Expression<Func<T, bool>> Make<T>() { return null; }
public static Expression<Func<T, bool>> Make<T>(this Expression<Func<T, bool>> predicate)
{
return predicate;
}
public static Expression<Func<T, bool>> MakePredicate<T>(this IQueryable<T> source)
{
return null;
}
public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr, Expression<Func<T, bool>> or)
{
if (expr == null) return or;
var invokedExpr = Expression.Invoke(or, expr.Parameters.Cast<Expression>());
return Expression.Lambda<Func<T, bool>>(Expression.Or(expr.Body, invokedExpr), expr.Parameters);
}
public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr, Expression<Func<T, bool>> and)
{
if (expr == null) return and;
var invokedExpr = Expression.Invoke(and, expr.Parameters.Cast<Expression>());
return Expression.Lambda<Func<T, bool>>(Expression.And(expr.Body, invokedExpr), expr.Parameters);
}
}
{
public static Expression<Func<T, bool>> Make<T>() { return null; }
public static Expression<Func<T, bool>> Make<T>(this Expression<Func<T, bool>> predicate)
{
return predicate;
}
public static Expression<Func<T, bool>> MakePredicate<T>(this IQueryable<T> source)
{
return null;
}
public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr, Expression<Func<T, bool>> or)
{
if (expr == null) return or;
var invokedExpr = Expression.Invoke(or, expr.Parameters.Cast<Expression>());
return Expression.Lambda<Func<T, bool>>(Expression.Or(expr.Body, invokedExpr), expr.Parameters);
}
public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr, Expression<Func<T, bool>> and)
{
if (expr == null) return and;
var invokedExpr = Expression.Invoke(and, expr.Parameters.Cast<Expression>());
return Expression.Lambda<Func<T, bool>>(Expression.And(expr.Body, invokedExpr), expr.Parameters);
}
}