using System;
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
public static class PredicateBuilder
{
public static Expression> True () { return f => true; }
public static Expression> False () { return f => false; }
public static Expression> Or (this Expression> expr1,Expression> expr2)
{
var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast ());
return Expression.Lambda>(Expression.OrElse (expr1.Body, invokedExpr), expr1.Parameters);
}
public static Expression> And (this Expression> expr1,Expression> expr2)
{
var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast ());
return Expression.Lambda>(Expression.AndAlso (expr1.Body, invokedExpr), expr1.Parameters);
}
}
Using Predicate builder it is developed using lamda expressions for dynamically add and ,or condition in where query in Linqtosql.
var predicate = PredicateBuilder.True();(Here ICP_ServiceProvider is Data base table)
string temp = Item.Value;
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
switch (Item.Target.ToUpper())
{
case "MFGACCTNUM":
if (Item.LogicalOperation.ToUpper() == "AND")
predicate = predicate.And(p => p.MfgAcctNum.StartsWith(temp));
else
predicate = predicate.Or(p => p.MfgAcctNum.StartsWith(temp));
break;
case "HVACPID":
if (Item.LogicalOperation.ToUpper() == "AND")
predicate = predicate.And(p => p.HVACPId.StartsWith(temp));
else
predicate = predicate.Or(p => p.HVACPId.StartsWith(temp));
break;
case "DISTRIBUTOR":
if (Item.LogicalOperation.ToUpper() == "AND")
predicate = predicate.And(p => p.Distributor.StartsWith(temp));
else
predicate = predicate.Or(p => p.Distributor.StartsWith(temp));
break;
default:
break;
}
}
var tmpdb = (from _ServiceProvider in PHDBContext.ICP_ServiceProviderMasters.Where(predicate)
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
public static class PredicateBuilder
{
public static Expression
public static Expression
public static Expression
{
var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast
return Expression.Lambda
}
public static Expression
{
var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast
return Expression.Lambda
}
}
Using Predicate builder it is developed using lamda expressions for dynamically add and ,or condition in where query in Linqtosql.
var predicate = PredicateBuilder.True
string temp = Item.Value;
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
switch (Item.Target.ToUpper())
{
case "MFGACCTNUM":
if (Item.LogicalOperation.ToUpper() == "AND")
predicate = predicate.And(p => p.MfgAcctNum.StartsWith(temp));
else
predicate = predicate.Or(p => p.MfgAcctNum.StartsWith(temp));
break;
case "HVACPID":
if (Item.LogicalOperation.ToUpper() == "AND")
predicate = predicate.And(p => p.HVACPId.StartsWith(temp));
else
predicate = predicate.Or(p => p.HVACPId.StartsWith(temp));
break;
case "DISTRIBUTOR":
if (Item.LogicalOperation.ToUpper() == "AND")
predicate = predicate.And(p => p.Distributor.StartsWith(temp));
else
predicate = predicate.Or(p => p.Distributor.StartsWith(temp));
break;
default:
break;
}
}
var tmpdb = (from _ServiceProvider in PHDBContext.ICP_ServiceProviderMasters.Where(predicate)
No comments:
Post a Comment