All Projects → iquirino → RestSQL

iquirino / RestSQL

Licence: Apache-2.0 License
C# Sql Where Clause Parser to be used as Rest Parameters to filter data. Port of: https://github.com/mmrath/rsql-parser

Programming Languages

C#
18002 projects
ANTLR
299 projects

RestSQL

Port of: https://github.com/mmrath/rsql-parser

C# Sql Where Clause Parser to be used as Rest Parameters to filter data

This parser is strong using Visitor Pattern: The IExpressionBuilder should be implemented and then call to build:

RestSQL<T>.Parse(query, this);

You can base on our test to implement your own strategy:

var testExpressionBuilder = new TestExpressionBuilder();
testExpressionBuilder.Build("ab > 'DE' and (c = d or d > 4.3) and e>4 or  rere in (20,30,40,50) and defer between 2 and 3 or rerer not in ('432','234324')");

Nuget Package: https://www.nuget.org/packages/RestSQL/

Implemented strategies:

  • SqlKata.QueryBuilder

https://www.nuget.org/packages/RestSQL.SqlKata/

var t = new Query().From("tblLalala").Where("Name", "Igor").Where(c=>c.Where("status","1").OrWhere("status","2"));

var compiler = new Oracle11gCompiler();
var testExpressionBuilder = new SqlKataBuilder();

var q = testExpressionBuilder.Build("ab > 'DE' and (c = d or d > 4.3) and e>4 or  rere in (20,30,40,50) and defer between 2 and 3 or rerer not in ('432','234324')");

var qb = testExpressionBuilder.BuildFrom("ab > 'DE' and (c = d or d > 4.3) and e>4 or  rere in (20,30,40,50) and defer between 2 and 3 or rerer not in ('432','234324')", t);

var sql = compiler.Compile(q.From("MyTable"));
var sqlb = compiler.Compile(qb);
  • NPoco

https://www.nuget.org/packages/RestSQL.NPoco/

var s = new SqlBuilder();
s.Where("ab > 'DE' and (c = d or d > 4.3) and e>4 or  rere in (20,30,40,50) and defer between 2 and 3 or rerer not in ('432','234324')");

var db = new Database("conn");
db.Fetch<User>(template);
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].