FunctionalQueryField
An extended query field class that is being used to define a functional query expression for the SQL statement. This class is very useful if you wish to customize your query expression in many ways. It inherits the QueryField object.
Usability
Below is a sample code that is using the TRIM
function of the underlying database.
var where = new FunctionalQueryField("Column", "Value", "TRIM({0})");
var result = connection.Query<Entity>(where);
The result would contain all the records where the trimmed value of the Column
is equals to Value
.
GetString
The GetString()
method returns a command text that utilizes the passed formatted function.
var where = new FunctionalQueryField("Column", "Value", "TRIM({0})");
var text = where.GetString(connection.GetDbSetting()); // Returns (TRIM([Column]) = @Column)
Formatting
It is important to take note that the library is using the string.Format()
method to compose the formatting of the expression. Therefore, in the format
argument of the constructor, always put the {0}
format indexer as a placement of the actual field.
See the complex formatting below.
var where = new FunctionalQueryField("Column", "Value", "LEN({0}) > 5 AND RIGHT({0})");
var text = where.GetString(connection.GetDbSetting()); // Returns (LEN([Column]) > 5 AND RIGHT([Column]) = @Column)