ExternalSort 1.1.0-beta001
See the version list below for details.
dotnet add package ExternalSort --version 1.1.0-beta001
NuGet\Install-Package ExternalSort -Version 1.1.0-beta001
<PackageReference Include="ExternalSort" Version="1.1.0-beta001" />
paket add ExternalSort --version 1.1.0-beta001
#r "nuget: ExternalSort, 1.1.0-beta001"
// Install ExternalSort as a Cake Addin #addin nuget:?package=ExternalSort&version=1.1.0-beta001&prerelease // Install ExternalSort as a Cake Tool #tool nuget:?package=ExternalSort&version=1.1.0-beta001&prerelease
External Sort
Contains various utilities to sort and join large amounts of data that is larger than the amount of available RAM.
OrderByExternal()
Sort IAsyncEnumerable<T> data.
IAsyncEnumerable<User> myUsersToSort = ...
var sortedUsers = myUsersToSort
.OrderByExternal(u => u.Email);
GroupJoinExternal()
GroupJoin (left outer join) on IAsyncEnumerable<T> data.
IAsyncEnumerable<User> myUsers = ...
IAsyncEnumerable<UserComments> myUserComments = ...
var joinedUsersAndComments = myUsersToSort
.GroupJoinExternal(myUserComments, u => u.UserId, uc => uc.UserId, (user, comments) => new
{
User = user,
Comments = comments.ToList()
});
ExceptByExternal()
ExceptBy (NOT IN) on IAsyncEnumerable<T> data.
IAsyncEnumerable<User> myUsers = ...
IAsyncEnumerable<int> myStaffUserIds = ...
var nonStaffUsers = myUsers
.ExceptByExternal(myStaffUserIds, u => u.UserId);
DistinctExternal()
Distinct on IAsyncEnumerable<T> data.
IAsyncEnumerable<User> myUsers = ...
IAsyncEnumerable<int> myUserAges = myUsers.Select(u => u.Age)
var distinctAges = myUserAges
.DistinctExternal();
Internally, ExternalSort uses Parquet temp files. See https://github.com/aloneguid/parquet-dotnet for class serialisation options.
Thanks to https://josef.codes/sorting-really-large-files-with-c-sharp/ for the inspiration.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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. |
-
net8.0
- Parquet.Net (>= 4.23.4)
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 |
---|---|---|
2.0.0-beta02 | 2,183 | 7/4/2024 |
2.0.0-beta01 | 94 | 7/4/2024 |
1.2.0 | 101 | 5/15/2024 |
1.2.0-beta001 | 822 | 4/15/2024 |
1.1.0 | 135 | 4/14/2024 |
1.1.0-beta003 | 178 | 4/11/2024 |
1.1.0-beta002 | 90 | 4/11/2024 |
1.1.0-beta001 | 115 | 4/10/2024 |
1.0.0 | 114 | 4/9/2024 |
1.0.0-beta005 | 148 | 4/8/2024 |
1.0.0-beta004 | 86 | 4/8/2024 |
1.0.0-beta003 | 121 | 4/8/2024 |
1.0.0-beta002 | 105 | 4/7/2024 |
1.0.0-beta001 | 99 | 4/4/2024 |