{"id":13458385,"url":"https://github.com/zzzprojects/LINQ-Async","last_synced_at":"2025-03-24T15:31:11.791Z","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":"2024-03-20T20:53:32.000Z","size":144,"stargazers_count":101,"open_issues_count":0,"forks_count":22,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-24T03:48:26.688Z","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":"2024-08-29T08:58:15.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,"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","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245297986,"owners_count":20592512,"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","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-07-31T09:00:51.976Z","updated_at":"2025-03-24T15:31:09.446Z","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":["C\\#"],"sub_categories":[],"readme":"## Library Powered By\n\nThis library is powered by [Entity Framework Extensions](https://entityframework-extensions.net/?z=github\u0026y=entityframework-plus)\n\n\u003ca href=\"https://entityframework-extensions.net/?z=github\u0026y=entityframework-plus\"\u003e\n\u003ckbd\u003e\n\u003cimg src=\"https://zzzprojects.github.io/images/logo/entityframework-extensions-pub.jpg\" alt=\"Entity Framework Extensions\" /\u003e\n\u003c/kbd\u003e\n\u003c/a\u003e\n\n---\n\n# 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## Download\n\u003ca href=\"https://www.nuget.org/packages/Z.Linq.Async/\" target=\"_blank\"\u003e\u003cimg src=\"https://zzzprojects.github.io/images/nuget/linq-async-v.svg\" alt=\"download\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://www.nuget.org/packages/Z.Linq.Async/\" target=\"_blank\"\u003e\u003cimg src=\"https://zzzprojects.github.io/images/nuget/linq-async-d.svg\" alt=\"\" /\u003e\u003c/a\u003e\n\n```\nPM\u003e Install-Package Z.Linq.Async\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## Contribute\n\nThe best way to contribute is by **spreading the word** about the library:\n\n - Blog it\n - Comment it\n - Star it\n - Share it\n \nA **HUGE THANKS** for your help.\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"}