LinQL 0.3.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package LinQL --version 0.3.0                
NuGet\Install-Package LinQL -Version 0.3.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LinQL" Version="0.3.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add LinQL --version 0.3.0                
#r "nuget: LinQL, 0.3.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install LinQL as a Cake Addin
#addin nuget:?package=LinQL&version=0.3.0

// Install LinQL as a Cake Tool
#tool nuget:?package=LinQL&version=0.3.0                

LinQL

LINQ-like access to GraphQL endpoints in .Net

Nuget

NuGet Badge

Supported Operations

  • Queries
  • Mutations
  • Input Types
  • Arguments
  • Interfaces/Unions
Coming soon
  • Subscriptions
  • Auto-generating client via introspection
  • Custom Scalars

Getting Started

  1. Install the Nuget package
dotnet add package LinQL
  1. Create a Graph and a RootType
public class StarWarsGraph : Graph
{
    public StarWarsGraph(IGraphQLConnection connection, IQueryTranslator queryTranslator)
        : base(connection, queryTranslator)
    {
    }

    public StarWarsQueries Query => this.RootType<StarWarsQueries>();
}

[OperationType]
public class StarWarsQueries : RootType<StarWarsQueries>
{
    public Film Film { get; set; }

    [GraphQLOperation, GraphQLField(Name = "film")]
    public Film GetFilm(string id) => this.Film;
}

public class Film
{
    [GraphQLField(Name = "ID")]
    public string? Id { get; set; }

    [GraphQLField(Name = "episodeID")]
    public int EpisodeId { get; set; }

    public string? Title { get; set; }
}
  1. Add a graph client to DI
public void ConfigureServices(IServiceCollection services)
{
    services.AddGraphQLClient<StarWarsGraph>()
            .WithHttpConnection(c => c.BaseAddress = new Uri("https://swapi-graphql.netlify.app/.netlify/functions/index"))
}

Underneath, WithHttpConnection is just setting up IHttpClientFactory so anything you can configure with that, you can configure here; authentication headers, middleware etc.

  1. Write queries!
public class StarWarsClient
{
    private readonly StarWarsGraph graph;

    public StarWarsClient(StarWarsGraph graph) => this.graph = graph;

    public async Task<Film> GetFilmById(string id, CancellationToken cancellationToken)
        => await this.graph.Query.Select(x => x.GetFilm(id)).Execute(cancellationToken);
}

For more help check out the docs

A range of expressions can be converted as demonstrated by the TranslationProviderTests. If you come accross something that doesn't work, please raise an issue or a pull request with a supporting test.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on LinQL:

Package Downloads
LinQL.GraphQL.Client

LINQ-like access to GraphQL endpoints in .Net

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.9.0 242 3/17/2024
0.8.0 838 3/14/2023
0.7.0 876 3/9/2023
0.6.1 878 2/27/2023
0.6.0 873 2/19/2023
0.5.1 1,349 9/30/2022
0.4.0 910 7/10/2022
0.3.0 898 7/3/2022
0.2.0 857 6/30/2022
0.1.0 899 6/28/2022