diff --git a/Marr.Data/QGen/QueryBuilder.cs b/Marr.Data/QGen/QueryBuilder.cs index fe3d86097..a38bce3f7 100644 --- a/Marr.Data/QGen/QueryBuilder.cs +++ b/Marr.Data/QGen/QueryBuilder.cs @@ -568,6 +568,31 @@ public virtual QueryBuilder Join(JoinType joinType, MemberInfo return this; } + public virtual bool Any(Expression> filterExpression) + { + bool useAltNames = _isFromView || _isGraph; + bool addTablePrefixToColumns = true; + _whereBuilder = new WhereBuilder(_db.Command, _dialect, filterExpression, _tables, useAltNames, addTablePrefixToColumns); + return Any(); + } + + public virtual bool Any() + { + SqlModes previousSqlMode = _db.SqlMode; + + // Generate a row count query + string where = _whereBuilder != null ? _whereBuilder.ToString() : string.Empty; + + bool useAltNames = _isFromView || _isGraph || _isJoin; + IQuery query = QueryFactory.CreateRowCountSelectQuery(_tables, _db, where, SortBuilder, useAltNames); + string queryText = query.Generate(); + + _db.SqlMode = SqlModes.Text; + int count = Convert.ToInt32(_db.ExecuteScalar(queryText)); + + _db.SqlMode = previousSqlMode; + return count > 0; + } #endregion