Skip to content

Commit a50722d

Browse files
committed
ColumnDistinctValue String Ordering Became More Friendly
1 parent 1099178 commit a50722d

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

src/GridifyExtensions/Extensions/QueryableExtensions.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,23 @@ public static async Task<PagedResponse<object>> ColumnDistinctValuesAsync<TEntit
254254
}
255255
}
256256

257-
var result = await baseQuery
258-
.Distinct()
259-
.OrderBy(x => x)
257+
// smart ordering for string values ---
258+
var orderedQuery = baseQuery.Distinct();
259+
260+
if (typeof(string).IsAssignableFrom(orderedQuery.ElementType))
261+
{
262+
var stringQuery = (IQueryable<string?>)orderedQuery;
263+
264+
orderedQuery = stringQuery
265+
.OrderBy(x => x == null ? int.MaxValue : x.Length) // shorter first
266+
.ThenBy(x => x)!; // then lexicographic
267+
}
268+
else
269+
{
270+
orderedQuery = orderedQuery.OrderBy(x => x);
271+
}
272+
273+
var result = await orderedQuery
260274
.Take(take)
261275
.ToListAsync(cancellationToken);
262276

src/GridifyExtensions/GridifyExtensions.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
<PackageReadmeFile>Readme.md</PackageReadmeFile>
99
<Authors>Pandatech</Authors>
1010
<Copyright>MIT</Copyright>
11-
<Version>2.1.4</Version>
11+
<Version>2.1.5</Version>
1212
<PackageId>Pandatech.GridifyExtensions</PackageId>
1313
<Title>Pandatech.Gridify.Extensions</Title>
1414
<PackageTags>Pandatech, library, Gridify, Pagination, Filters</PackageTags>
1515
<Description>Pandatech.Gridify.Extensions simplifies and extends the functionality of the Gridify NuGet package. It provides additional extension methods and functionality to streamline data filtering and pagination, making it more intuitive and powerful to use in .NET applications. Our enhancements ensure more flexibility, reduce boilerplate code, and improve overall developer productivity when working with Gridify.</Description>
1616
<RepositoryUrl>https://github.com/PandaTechAM/be-lib-gridify-extensions</RepositoryUrl>
17-
<PackageReleaseNotes>ColumnDistinctValue Encrypted Column Null Handling</PackageReleaseNotes>
17+
<PackageReleaseNotes>ColumnDistinctValue String Ordering Became More Friendly</PackageReleaseNotes>
1818
</PropertyGroup>
1919

2020
<ItemGroup>
@@ -23,7 +23,7 @@
2323
</ItemGroup>
2424

2525
<ItemGroup>
26-
<PackageReference Include="Gridify.EntityFramework" Version="2.17.0" />
26+
<PackageReference Include="Gridify.EntityFramework" Version="2.17.2" />
2727
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.8" />
2828
</ItemGroup>
2929

0 commit comments

Comments
 (0)