Unified result handling & data paging for .NET projects. Fast, simple, and clean.
Result/Result<T>– Represent success or failure of any operation. Avoid throwing exceptions unnecessarily.PagedResult<T>– Easily page your IQueryable data. Comes with extensions for LINQ.PaginationQuery– Specify page number, page size, and sorting for PagedResult.
dotnet add package AnyResultsvar result = Result.Ok().WithMessage("Operation successful");
if (result.IsSuccess)
{
Console.Write(result.Data); // "Operation successful"
}User user = new() { Name = "Tom" };
var result = Result.Ok(user);
if (result.IsSuccess)
{
Console.Write(result.Data.Name); // Tom
}Result/Result<T>– Represent success or failure of any operation. Supports implicit conversion betweenResultandResult<T>to simplify handling generic and non-generic results.
public Result<Todo> Update(Guid id, UpdateTodoInputModel todoModel)
{
if (todoModel == null)
return Result.Fail("Todo cannot be null."); // <-- Result
Todo todo = FindById(id);
try
{
// update database command.
}
catch (Exception ex)
{
return Result.Fail(ex); // <-- Result
}
return Result.Ok(todo).WithMessage(message: "Todo created successfully!"); // <-- Result
}var result = Result.Fail("An error was occurred!");
if (result.IsSuccess == false)
{
Console.WriteLine(result.Messages[0]); // An error was occurred!
} public async Task<PagedResult<Users>> PageByBusinessIdAsync(PaginationQuery page)
{
var query = context.Users.AsQueryable();
var paged = await query.ToPagedResultAsync(page, ct);
}