使用表达式树动态构建Linq查询条件来实现单个实体动态查询
2011-06-13 17:12
656 查看
// 得到城市ID,合法的ID>0,其他的小于0
var cid = Convert.ToInt32(ddlCity.SelectedValue);
// 创建静态类型为ut_View的参数表达式
ParameterExpression c = Expression.Parameter(typeof(ut_View), "c");
// 建立静态的True的表达式,用于与操作
Expression condition = Expression.Constant(true);
if (cid > 0)
{
//如果是合法City
// 该表达式用于判断一个ut_View类的CityID属性的值是等于传入的cid
Expression con = Expression.Call(
Expression.Property(c, typeof(ut_View).GetProperty("CityID")),
typeof(Nullable<int>).GetMethod("Equals", new Type[] { typeof(Nullable<int>) }),
Expression.Constant(cid, typeof(object)));
// 进行与运算
condition = Expression.And(con, condition);
}
// 建立lambda表达式委托
Expression<Func<ut_View, bool>> end = Expression.Lambda<Func<ut_View, bool>>(condition, new ParameterExpression[] { c });
// 传入委托
var query = _I360UModelContext.ut_Views.Where(end);
var cid = Convert.ToInt32(ddlCity.SelectedValue);
// 创建静态类型为ut_View的参数表达式
ParameterExpression c = Expression.Parameter(typeof(ut_View), "c");
// 建立静态的True的表达式,用于与操作
Expression condition = Expression.Constant(true);
if (cid > 0)
{
//如果是合法City
// 该表达式用于判断一个ut_View类的CityID属性的值是等于传入的cid
Expression con = Expression.Call(
Expression.Property(c, typeof(ut_View).GetProperty("CityID")),
typeof(Nullable<int>).GetMethod("Equals", new Type[] { typeof(Nullable<int>) }),
Expression.Constant(cid, typeof(object)));
// 进行与运算
condition = Expression.And(con, condition);
}
// 建立lambda表达式委托
Expression<Func<ut_View, bool>> end = Expression.Lambda<Func<ut_View, bool>>(condition, new ParameterExpression[] { c });
// 传入委托
var query = _I360UModelContext.ut_Views.Where(end);
相关文章推荐
- 使用反射让linq实现动态查询, 类似拼接sql语句的where 条件
- 使用反射让linq实现动态查询, 类似拼接sql语句的where 条件
- LINQ to SQL 运行时动态构建查询条件
- LINQ to SQL 运行时动态构建查询条件
- 使用ADF-BC 实现查询功能之八:通过代码动态设置Criteria条件参数
- LINQ to SQL 运行时动态构建查询条件
- LINQ to SQL 运行时动态构建查询条件
- Linq to sql 实现多条件的动态查询(方法一)
- Linq to sql 实现多条件的动态查询(方法一)
- 使用Expression Tree构建动态LINQ查询
- [转]Linq to sql 实现多条件的动态查询(方法二)
- MyBatis中的动态SQL,实现不确定条件的CRUD-----使用Map来传递查询的参数
- linq to sql 动态构建查询表达式树
- EF-Linq 将实体对象转换为搜索条件以进行通用动态查询
- 用Linq 实现动态多条件查询
- linq to sql 动态构建查询表达式树
- Linq使用Group By分析 Entity Framework 使用注意:Where查询条件中用到的关联实体不需要Include
- 用Linq 实现动态多条件查询(转载)
- Hibernate使用原生的动态sql实现带条件的查询分页功能
- hibernate(jpa)根据实体动态生成查询条件,并实现分页问题的解决方案