Skip to content

Commit 92990f8

Browse files
authored
Merge pull request #57 from PandaTechAM/development
ColumnDistinctValue String Ordering Became More Friendly
2 parents 3b87052 + a50722d commit 92990f8

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)