Skip to main content
Moderne OnlyThis recipe is proprietary to Moderne and runs on the Moderne platform or CLI — it isn’t part of the open-source catalog. Available with a Moderne subscription.Contact Sales

Find LINQ ambiguities introduced by .NET 9 IAsyncEnumerable extensions

Recipe IDOpenRewrite.Recipes.CSharp.Migration.Dotnet.Net9.FindAsyncEnumerableLinqAmbiguity
ArtifactOpenRewrite.Recipes.CSharp.Migration.Dotnet

.NET 9 added LINQ extension methods on IAsyncEnumerable<T>. Types implementing both IQueryable<T> and IAsyncEnumerable<T> (notably EF Core DbSet<T>) now produce ambiguous Where/Select/FirstOrDefault/etc. calls. Flags such calls for manual disambiguation (typically by inserting .AsQueryable()).

Single recipeOpenRewritecsharplinqsearchnet9Moderne Proprietary License
Try in PlatformTry this recipe in the Moderne platform. Not a user yet? You’ll get a no-setup demo environment, with nothing to install or configure.

Usage

Run this recipe

In order to run C# recipes, you will need to use the Moderne CLI.

Once the CLI is installed, you can install this C# recipe package by running the following command:

Install the recipe package
mod config recipes nuget install OpenRewrite.Recipes.CSharp.Migration.Dotnet

Then, you can run the recipe via:

Run the recipe
mod run . --recipe OpenRewrite.Recipes.CSharp.Migration.Dotnet.Net9.FindAsyncEnumerableLinqAmbiguity