A high-performance C# GraphQL client with Linq-like syntax that avoids Reflection.Emit for near-raw HTTP call performance.
ZeroQL is a GraphQL client for C# that allows developers to write GraphQL queries using a Linq-like syntax. It generates strongly-typed clients from GraphQL schemas, providing type safety and IntelliSense while avoiding performance penalties from reflection or expression trees. It solves the problem of integrating GraphQL APIs into C# applications in a way that feels natural and efficient.
C# developers building applications that consume GraphQL APIs, especially those who value type safety, IntelliSense, and high performance without the overhead of traditional GraphQL clients.
Developers choose ZeroQL for its Linq-like query syntax that reduces GraphQL learning curve, its high performance close to raw HTTP calls, and its strong typing that catches errors at compile time rather than runtime.
C# GraphQL client with Linq-like syntax
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses lambda expressions similar to LINQ, making GraphQL queries intuitive for C# developers, as shown in the README examples where queries resemble familiar C# code.
Avoids Reflection.Emit and expression trees, with benchmarks demonstrating performance close to raw HTTP calls and better than StrawberryShake in some cases.
Generates strongly-typed clients from GraphQL schemas, providing compile-time type checking and IDE support, reducing runtime errors.
Designed to work with Ahead-of-Time compilation environments, ensuring compatibility where reflection-based clients fail, unlike the deprecated request syntax.
Lacks support for subscriptions, @defer, and @stream, which are critical for real-time or complex data fetching scenarios, as admitted in the README's feature checklist.
Requires multiple steps: installing CLI tools, pulling schemas, configuring JSON files, and building the project to generate clients, which can be time-consuming compared to drop-in solutions.
Variables in queries must be local variables or parameters; using properties directly causes compilation errors, as highlighted in the README, adding constraints on query design.