AInq.Optional.Async
4.3.0
dotnet add package AInq.Optional.Async --version 4.3.0
NuGet\Install-Package AInq.Optional.Async -Version 4.3.0
<PackageReference Include="AInq.Optional.Async" Version="4.3.0" />
<PackageVersion Include="AInq.Optional.Async" Version="4.3.0" />
<PackageReference Include="AInq.Optional.Async" />
paket add AInq.Optional.Async --version 4.3.0
#r "nuget: AInq.Optional.Async, 4.3.0"
#:package AInq.Optional.Async@4.3.0
#addin nuget:?package=AInq.Optional.Async&version=4.3.0
#tool nuget:?package=AInq.Optional.Async&version=4.3.0
AInq.Optional


What is it?
Simple optional types with basic helpers and converters
Maybe<T>value or nothingTry<T>value or errorEither<TLeft, TRight>value either value
AInq.Optional - Types and basic helpers
AInq.Optional.Async - Async helpers and extensions
New in 4.3
Some Maybe LINQ extensions renamed to avoid ambiguity with other libs with similar functions. Current method names saved as aliases and marked as deprecated and will be removed in next major release.
Renamed method groups:
IEnumerable.FirstOrNone→IEnumerable.MaybeFirstIEnumerable.LastOrNone→IEnumerable.MaybeLastIEnumerable.SingleOrNone→IEnumerable.MaybeSingleIEnumerable.FirstOrNoneNotNull→IEnumerable.MaybeFirstNotNullIEnumerable.LastOrNoneNotNull→IEnumerable.MaybeLastNotNullIEnumerable.SingleOrNoneNotNull→IEnumerable.MaybeSingleNotNull
New in 4.1
Large refactoring and internal optimization with some breaking changes
- Remove build targets for STS .Net versions
System.Linqis used for collection extensions, which may cause minor behavior changesSystem.Linq.AsyncEnumerableis used in .net10 with minor API changes- Change some methods to remove ambiguity
- Rename
Maybe.AsTrytoMaybe.TryValue - Rename
Try.AsMaybetoTry.MaybeValue - Rename converter
Maybe.OrtoMaybe.EitherValue - Make
boolcast operators explicit
- Rename
- Remove all
Try<T>extensions, which can implicitly hide exceptions Try.MaybeValuenow throw exception if source is not success, introduced flag to suppress this- Save exception stacktrace in
Try<T> - New APIs
|(or) operator forMaybe<T>!(not) operator forMaybe<T>andTry<T>!(invert) operator forEither<TLeft, TRight>Maybe.Valuescollection extension with filteringTry.Resultwith additional generator parameter
New in 3.0
For version 3.0 this lib was completely rewritten with some breaking changes
- All types are now
classinstead ofstruct - Remove some logically obscure methods
IComparableimplementation (problems with comparingnulland empty item)- Type cast operators (unused)
Try.SelectOrDefaultandTry.ValueOrDefault(implicitly hides error, can be replaced withTry.AsMaybe)
- Async extensions completely rewritten using
ValueTaskand moved to separate package
Contribution
If you find a bug, have a question or something else - you are friendly welcome to open an issue.
License
Copyright © 2021 Anton Andryushchenko. AInq.Optional is licensed under Apache License 2.0
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- AInq.Optional (>= 4.3.0)
- Microsoft.Bcl.AsyncInterfaces (>= 8.0.0)
- System.Threading.Tasks.Extensions (>= 4.6.3)
-
.NETStandard 2.1
- AInq.Optional (>= 4.3.0)
-
net10.0
- AInq.Optional (>= 4.3.0)
-
net8.0
- AInq.Optional (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.3.0 | 126 | 2/10/2026 |
| 4.3.0-rc.1 | 43 | 2/8/2026 |
| 4.2.0 | 102 | 2/6/2026 |
| 4.1.0 | 413 | 12/18/2025 |
| 4.0.1 | 235 | 12/5/2025 |
| 4.0.0-preview.3 | 196 | 11/14/2025 |
| 4.0.0-preview.2 | 216 | 11/14/2025 |
| 4.0.0-preview.1 | 224 | 11/14/2025 |
| 3.9.1 | 341 | 11/12/2025 |
| 3.9.0-rc.3 | 175 | 11/6/2025 |
| 3.9.0-rc.2 | 176 | 10/22/2025 |
| 3.9.0-rc | 166 | 10/15/2025 |
| 3.8.9 | 210 | 10/15/2025 |
| 3.8.8 | 338 | 9/10/2025 |
| 3.8.7 | 302 | 8/11/2025 |
| 3.8.6 | 282 | 7/9/2025 |
| 3.8.5 | 489 | 6/11/2025 |
| 3.8.4 | 284 | 6/2/2025 |
[IMP] Some Maybe LINQ extensions renamed to avoid ambiguity with other libs with similar functions. Current method names saved
as aliases and marked as deprecated and will be removed in next major release.
[FIX] Minor bug fix