// 得到城市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);