Show HN: HLinq: easy to use and extensible .NET resource query language (github.com)

3 points by npodbielski ↗ HN
Hi! For last two years I am working on side project: dynamically configurable, zero-downtime API, with low-code flows to write small pieces of logic - Hamster Wheel. For this I had to build my own resource query language in order for the user to be able to query specific data from the API via GET endpoints.

HLinq is a library that adds query language capabilities to any API written in modern .net.

Demo in memory collection: https://hlinq-demo.podbielski.it/demo/memory

Demo, db collection: https://hlinq-demo.podbielski.it/demo/db

GitHub: https://github.com/npodbielski/HamsterWheel.HLinq?tab=readme...

Some information about Hamster Wheel: https://internetexception.com/why-hamster-wheel/

HLinq Design: https://internetexception.com/2025/10/28/hlinq-design/

Fluent Code Generators: https://github.com/npodbielski/HamsterWheel.FluentCodeGenera...

I started working on dynamic API as a way to have one platform for my self-host lab tinkering. I.e. to have ability check for health of my self-hosted services and restart them if necessary. Or to open/close my house driveway gate or for automated watering in my garden. Writing an API for each of those is a bit tiresome so having one single API that I can configure instead seems like better idea. For this API project consists of 4 parts: code generaterators, query language, flows runner and of course host API.

HLinq demo pages allows to edit the query inside the browser window! I.e.:

Some selecting examples:

https://hlinq-demo.podbielski.it/demo/db?select[x.firstName] - return only one property

https://hlinq-demo.podbielski.it/demo/db?select[x.firstName,... - return only two properties

https://hlinq-demo.podbielski.it/demo/db?select[fullName=x.f... - the same two properties but name will be renamed to "fullName"

https://hlinq-demo.podbielski.it/demo/db?select[fullName=x.f... - you can add syntactic property to the response

Some filtering examples:

https://hlinq-demo.podbielski.it/demo/db?where[x.id>22].select[fullName=x.firstName] - get names of people that have ids bigger than 22

https://hlinq-demo.podbielski.it/demo/db?where[ilike(x.first... - case-insensitive search for 'b*' string

https://hlinq-demo.podbielski.it/demo/db?where[x.id==22] - exact value search

0 comments

[ 4.7 ms ] story [ 12.1 ms ] thread

No comments yet.