MrDHelper 3.0.0
dotnet add package MrDHelper --version 3.0.0
NuGet\Install-Package MrDHelper -Version 3.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MrDHelper" Version="3.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MrDHelper" Version="3.0.0" />
<PackageReference Include="MrDHelper" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MrDHelper --version 3.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: MrDHelper, 3.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MrDHelper@3.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MrDHelper&version=3.0.0
#tool nuget:?package=MrDHelper&version=3.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
MrDHelper
Common helpers and extension methods for .NET projects, with support for:
- collection helpers
- string, bool, date, and geo utilities
Result/Result<T>modelsDisplayAttributereflection helpers- EF Core paging and search extensions
- SQLite FTS5 integration
- MudBlazor search state helpers
Target Framework
.NET 9
Installation
dotnet add package MrDHelper
Quick Start
using MrDHelper;
using MrDHelper.CollectionHelpers.IEnummerableHelper;
using MrDHelper.CollectionHelpers.IListHelper;
using MrDHelper.Models;
var values = new[] { 1, 2, 3 };
var total = 0;
values.ForEach(x => total += x);
var md5 = "hello".GetMd5();
var normalized = StringHelper.Normalize(" Ha Noi ");
var result = Result<int>.Ok(total, "done");
Main Features
Collection Helpers
using MrDHelper.CollectionHelpers.IEnummerableHelper;
using MrDHelper.CollectionHelpers.IListHelper;
IEnumerable<int> numbers = new[] { 1, 2, 3 };
await numbers.ForEachAsync(async x => await Task.Delay(x));
IList<string> items = new List<string> { "A" };
items.AddDummyItemsToMaximumCountOf(3, "-");
// Result: [ "A", "-", "-" ]
Primitive and Value Helpers
using MrDHelper;
using MrDHelper.ValueTypeHelpers.BoolHelper;
using MrDHelper.ValueTypeHelpers.DateTimeHelper;
using MrDHelper.ValueTypeHelpers.GeoPointHelper;
var isEmpty = "".IsNullOrEmpty();
var isTrue = ((bool?)true).IsTrue();
var when = DateTimeOffset.UtcNow.ToVietnamString();
var compact = 1540d.ToCompactDistance(); // "1.5km"
Result Models
using MrDHelper.Models;
var success = Result<string>.Ok("payload", "completed");
var failure = Result<string>.Failure("VALIDATION", "Invalid input");
var message = success.Match(
onSuccess: value => $"OK: {value}",
onFailure: error => $"ERR: {error.Description}");
DisplayAttribute Helpers
using MrDHelper.GenericHelper;
var displayName = myEnumValue.GetDisplayName();
var orderedProps = DisplayExtensions.GetDisplayOrderedProperties(typeof(MyViewModel));
var enumItems = DisplayExtensions.GetValueLabelListForEnum<MyEnum>();
Cell Conversion Helpers
using MrDHelper.CellHelpers;
var cell = model.ConvertToCell();
cell["Name"] = "Updated";
var restored = cell.ConvertTo<MyModel>();
EF Core Paging and Search
using MrDHelper.AppData.Extensions;
var page = await db.Reports
.AsNoTracking()
.ApplySearchClientSide("ha noi", x => x.Title, x => x.Summary)
.OrderBy(x => x.Id)
.ToPagedAsync(page: 0, pageSize: 20);
Available extensions include:
ToPagedAsyncToPagedSliceAsyncApplySearchClientSideApplySearchAnyClientSideApplySearchAnyServerSide
SQLite FTS5
MrDHelper includes a lightweight SQLite FTS5 integration layer for EF Core.
- Implement
IHasGuidIdandIFtsIndexed.
using MrDHelper.AppDomain.EfSqliteFts5;
public sealed class DonVi : IHasGuidId, IFtsIndexed
{
public Guid Id { get; set; }
public string Code { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public string BuildFtsAllText()
=> string.Join(" | ", new[] { Code, Name });
}
- Register the FTS mapping once at startup.
using MrDHelper.AppDomain.EfSqliteFts5;
FtsRegistry.Register<DonVi>(
mainTable: "DonVis",
ftsTable: "DonVi_fts",
idColumn: "Id");
- Add the save interceptor and ensure the FTS schema.
using Microsoft.EntityFrameworkCore;
using MrDHelper.AppDomain.EfSqliteFts5;
services.AddDbContext<AppDbContext>(options =>
{
options.UseSqlite("Data Source=app.db");
options.AddInterceptors(new SqliteFtsSaveChangesInterceptor());
});
await db.Database.MigrateAsync();
await FtsSchema.EnsureFtsTablesAsync(db);
- Search with
FtsSearchService.
using MrDHelper.AppDomain.EfSqliteFts5;
using MrDHelper.MudBlazor.Search;
var service = new FtsSearchService(db);
var result = await service.SearchAsync<DonVi>(
new SearchQuery { Search = "ha noi", Page = 0, PageSize = 20 },
q => q.OrderBy(x => x.Name),
cancellationToken);
MudBlazor Search State
using MrDHelper.MudBlazor.Search;
var store = new SearchQueryStore();
store.SetActiveKey("users");
store.UpdateActive(query =>
{
query.Search = "admin";
query.Page = 0;
}, SearchQueryChangeSource.Ui);
Test
dotnet test MrDHelper.sln
Repository Structure
MrDHelper/: library sourceMrDHelper.Tests/: NUnit test projectImages/: package and repository assets
Contributing
Issues and pull requests are welcome.
If you change public helpers or extension methods, please update tests together with the code.
License
Distributed under the MIT License. See LICENSE.txt.
Links
- NuGet: MrDHelper
- Repository: dattiphu2022/MrDHelper
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. 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 was computed. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net9.0
- MailKit (= 4.15.1)
- Microsoft.AspNetCore.Identity (= 2.3.9)
- Microsoft.AspNetCore.Identity.EntityFrameworkCore (= 9.0.14)
- Microsoft.EntityFrameworkCore (= 9.0.14)
- Microsoft.EntityFrameworkCore.Relational (= 9.0.14)
- Microsoft.EntityFrameworkCore.Sqlite (= 9.0.14)
- MudBlazor (= 8.15.0)
- System.ComponentModel.Annotations (= 5.0.0)
- System.Text.Json (= 9.0.14)
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 |
|---|---|---|
| 3.0.0 | 126 | 3/20/2026 |
| 2.2.1 | 131 | 3/15/2026 |
| 2.2.0 | 121 | 3/15/2026 |
| 2.1.6 | 131 | 3/15/2026 |
| 2.1.5 | 115 | 3/14/2026 |
| 2.1.4 | 127 | 3/14/2026 |
| 2.1.3 | 115 | 3/3/2026 |
| 2.1.2 | 115 | 3/2/2026 |
| 2.1.1 | 125 | 2/8/2026 |
| 2.1.0 | 129 | 1/31/2026 |
| 2.0.9 | 143 | 1/25/2026 |
| 2.0.8 | 139 | 1/19/2026 |
| 2.0.7 | 131 | 1/18/2026 |
| 2.0.6 | 132 | 1/18/2026 |
| 2.0.5 | 138 | 1/18/2026 |
| 2.0.4 | 136 | 1/18/2026 |
| 2.0.3 | 316 | 11/14/2025 |
| 2.0.2 | 350 | 11/13/2025 |
| 2.0.1 | 330 | 11/13/2025 |
| 1.1.2 | 342 | 11/13/2025 |
Loading failed
Fixing bugs