/// <summary> /// 表达式树查询 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="predicate"></param> /// <returns></returns> public List <T> ExpressQuery <T>(Expression <Func <T, bool> > predicate) { try { ConditionBuilderVisitor visitor = new ConditionBuilderVisitor(); visitor.Visit(predicate); string sqlStr = visitor.ToExpressionString(); Type modelType = typeof(T); string sqlString = $"select * from [{modelType.Name}] where 1=1"; if (!string.IsNullOrEmpty(sqlStr)) { sqlString += " AND " + sqlStr; } return(client.ExcuteSqlDelegate <List <T> >(sqlString, cmd => { SqlDataReader reader = cmd.ExecuteReader(); var getData = client.GetDataReader <T>(reader); return getData; }, null)); } catch (Exception ex) { throw ex; } }