{"id":19740643,"url":"https://github.com/zzzprojects/linq-async","last_synced_at":"2025-10-08T11:10:24.279Z","repository":{"id":39423098,"uuid":"48296536","full_name":"zzzprojects/LINQ-Async","owner":"zzzprojects","description":"C# LINQ Async extension methods library for async/await task.","archived":false,"fork":false,"pushed_at":"2025-06-01T15:20:23.000Z","size":168,"stargazers_count":101,"open_issues_count":0,"forks_count":23,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-09-12T00:03:28.651Z","etag":null,"topics":["async","linq-async-extensions","linq-methods"],"latest_commit_sha":null,"homepage":"https://zzzprojects.com","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zzzprojects.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["zzzprojects","Linq-Async"],"custom":["https://zzzprojects.com/contribute"]}},"created_at":"2015-12-19T20:43:33.000Z","updated_at":"2025-08-25T10:40:29.000Z","dependencies_parsed_at":"2024-06-19T16:04:26.211Z","dependency_job_id":"e31bb7a4-29b1-4866-bbf7-a2042834a08c","html_url":"https://github.com/zzzprojects/LINQ-Async","commit_stats":{"total_commits":65,"total_committers":3,"mean_commits":"21.666666666666668","dds":"0.24615384615384617","last_synced_commit":"1316da6da3cf94848018b4b4eb4529c5a068384a"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/zzzprojects/LINQ-Async","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzzprojects%2FLINQ-Async","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzzprojects%2FLINQ-Async/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzzprojects%2FLINQ-Async/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzzprojects%2FLINQ-Async/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zzzprojects","download_url":"https://codeload.github.com/zzzprojects/LINQ-Async/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzzprojects%2FLINQ-Async/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278931654,"owners_count":26070789,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","linq-async-extensions","linq-methods"],"created_at":"2024-11-12T01:22:39.863Z","updated_at":"2025-10-08T11:10:24.273Z","avatar_url":"https://github.com/zzzprojects.png","language":"C#","funding_links":["https://github.com/sponsors/zzzprojects","https://github.com/sponsors/Linq-Async","https://zzzprojects.com/contribute"],"categories":[],"sub_categories":[],"readme":"# What's LINQ-Async?\n\nLINQ-Async allows you to **chain async task and orders async predicate with fluent API**.\n\n## Features\n- \u003ca href=\"#linq-async-extensions\"\u003eLINQ Async Extensions\u003c/a\u003e\n- \u003ca href=\"#linq-async-predicate-extensions\"\u003eLINQ Async Precicate Extensions\u003c/a\u003e\n   - OrderByPredicateCompletion\n   - StartPredicateConcurrently\n- \u003ca href=\"#linq-async-task-extensions\"\u003eLINQ Async Task Extensions\u003c/a\u003e\n- \u003ca href=\"#linq-async-enumerable-task-extensions\"\u003eLINQ Async Enumerable Task Extensions\u003c/a\u003e\n   - OrderByCompletion\n   - SelectResult\n \n## Sponsors\n\nZZZ Projects owns and maintains **LINQ-Async** as part of our [mission](https://zzzprojects.com/mission) to add value to the .NET community\n\nThrough [Entity Framework Extensions](https://entityframework-extensions.net/?utm_source=zzzprojects\u0026utm_medium=linq-async) and [Dapper Plus](https://dapper-plus.net/?utm_source=zzzprojects\u0026utm_medium=linq-async), we actively sponsor and help key open-source libraries grow.\n\n[![Entity Framework Extensions](https://raw.githubusercontent.com/zzzprojects/LINQ-Async/master/entity-framework-extensions-sponsor.png)](https://entityframework-extensions.net/bulk-insert?utm_source=zzzprojects\u0026utm_medium=linq-async)\n\n[![Dapper Plus](https://raw.githubusercontent.com/zzzprojects/LINQ-Async/master/dapper-plus-sponsor.png)](https://dapper-plus.net/bulk-insert?utm_source=zzzprojects\u0026utm_medium=linq-async)\n\n## Download\n\n[![nuget](https://img.shields.io/nuget/v/Z.Linq.Async?logo=nuget\u0026style=flat-square)](https://www.nuget.org/packages/Z.Linq.Async)\n[![nuget](https://img.shields.io/nuget/dt/Z.Linq.Async?logo=nuget\u0026style=flat-square)](https://www.nuget.org/packages/Z.Linq.Async)\n\n```\nPM\u003e NuGet\\Install-Package Z.EntityFramework.Plus.EFCore\n```\n\n```\n\u003e dotnet add package Z.EntityFramework.Plus.EFCore\n```\n\n## LINQ Async Extensions\n##### Problem\nYou want to use LINQ methods asynchronously.\n\n##### Solution\nAll LINQ extension methods and overloads are supported. You can easily create any asynchronous task.\n\n```chsarp\n// Using Z.Linq\n\npublic Task\u003cIEnumerable\u003cCustomer\u003e\u003e MyAsyncMethod(CancellationToken cancellationToken)\n{\n    List\u003cCustomer\u003e customers = DB.GetCustomers();\n    var task = list.WhereAsync(c =\u003e /* long predicate */, cancellationToken);\n\n    // ... synchronous code ...\n    \n    return task;\n}\n```\n\n## LINQ Async Predicate Extensions\n##### Problem\nYou want to resolve a predicate asynchronously and start all predicates concurrently and/or order them by completion.\n\n##### Solution\nAll LINQ extension methods and overloads using a predicate are supported. You can easily use an asynchronously predicate and choose how the predicate will be resolved:\n - OrderByPredicateCompletion(bool)\n - StatePredicateConcurrently(bool)\n\n**Support:**\n- Deferred\n   - SkipWhile\n   - Where\n- Immediate\n   - All\n   - Any\n   - Count\n   - First\n   - FirstOrDefault\n   - LongCount\n   - Single\n   - SingleOrDefault\n\n```chsarp\n// Using Z.Linq\n\n// Change global default value\nLinqAsyncManager.DefautlValue.OrderByPredicateCompletion = false;\nLinqAsyncManager.DefaultValue.StartPredicateConcurrently = false;\n\npublic Task\u003cIEnumerable\u003cCustomer\u003e\u003e MyAsyncTaskMethod(CancellationToken cancellationToken)\n{\n    List\u003cCustomer\u003e customers = DB.GetCustomers();\n    \n    // GET all customers by predicate completion\n    var task = list.WhereAsync(c =\u003e MyAsyncPredicate(DB.IsCustomerActiveAsync(c)))\n                   .OrderByPredicateCompletion();\n\n    // ... synchronous code ...\n    \n    return task;\n}\n```\n\n**[Learn more](https://github.com/zzzprojects/LINQ-AsyncExtensions/wiki/LINQ-AsyncPredicateExtensions)**\n\n## LINQ Async Task Extensions\n##### Problem\nYou want to chain LINQ methods with Task\u0026lt;IEnumerable\u0026lt;T\u0026gt;\u0026gt;.\n\n##### Solution\nAll LINQ extensions methods and overloads are supported. You can easily chain multiples LINQ methods before awaiting your final task.\n\n**Support:**\n - Array\n - Enumerable\n - List\n\n_Other types must use \"AsEnumerable()\" method to allow to chain LINQ methods._\n\n```chsarp\n// Using Z.Linq\n\npublic async Task\u003cList\u003cCustomer\u003e\u003e MyAsyncTaskMethod(CancellationToken cancellationToken)\n{\n    // GET the five first customers which the predicate has completed\n    var task = list.WhereAsync(c =\u003e MyAsyncPredicate(DB.IsCustomerActiveAsync(c)))\n                         .OrderByPredicateCompletion()\n                         .Take(5)\n                         .ToList();\n\n\n    // ... synchronous code ...\n    \n    return task;\n}\n```\n\n**[Learn more](https://github.com/zzzprojects/LINQ-AsyncExtensions/wiki/LINQ-AsyncTaskExtensions)**\n\n## LINQ Async Enumerable Task Extensions\n##### Problem\nYou want to use LINQ methods with enumerable tasks and order them by completion.\n\n##### Solution\n\n**Support:**\n- OrderByCompletion\n- SelectResult \n\n```chsarp\n// Using Z.Linq\n\npublic async Task\u003cList\u003cCustomer\u003e\u003e MyAsyncTaskMethod(CancellationToken cancellationToken)\n{\n    // GET customer from concurrent web service\n    IEnumerable\u003cTask\u003cList\u003cCustomer\u003e\u003e\u003e task =  WebService.GetCustomers();\n    \n    // GET the customer list from the first web service completed\n    var taskFirstCompleted = task.SelectResultByCompletion()\n                                 .SelectResult()\n\t\t\t\t\t\t\t\t .First()\n\t\t\t\t\t\t\t\t \n                   \n    // GET the five first customers which the predicate has completed\n    var task = taskFirstCompleted.WhereAsync(c =\u003e MyAsyncPredicate(DB.IsCustomerActiveAsync(c)))\n                                 .OrderByPredicateCompletion()\n                                 .Take(5)\n                                 .ToList();\n    \n    // ... synchronous code ...\n    \n    return task;\n}\n```\n\n**[Learn more](https://github.com/zzzprojects/LINQ-AsyncExtensions/wiki/LINQ-AsyncEnumerableExtensions)**\n\n## More Projects\n\n- Projects:\n   - [EntityFramework Extensions](https://entityframework-extensions.net/)\n   - [Dapper Plus](https://dapper-plus.net/)\n   - [C# Eval Expression](https://eval-expression.net/)\n- Learn Websites\n   - [Learn EF Core](https://www.learnentityframeworkcore.com/)\n   - [Learn Dapper](https://www.learndapper.com/)\n- Online Tools:\n   - [.NET Fiddle](https://dotnetfiddle.net/)\n   - [SQL Fiddle](https://sqlfiddle.com/)\n   - [ZZZ Code AI](https://zzzcode.ai/)\n- and much more!\n\nTo view all our free and paid projects, visit our website [ZZZ Projects](https://zzzprojects.com/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzzzprojects%2Flinq-async","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzzzprojects%2Flinq-async","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzzzprojects%2Flinq-async/lists"}