Pargoon.Extensions.Linq
1.0.6
dotnet add package Pargoon.Extensions.Linq --version 1.0.6
NuGet\Install-Package Pargoon.Extensions.Linq -Version 1.0.6
<PackageReference Include="Pargoon.Extensions.Linq" Version="1.0.6" />
paket add Pargoon.Extensions.Linq --version 1.0.6
#r "nuget: Pargoon.Extensions.Linq, 1.0.6"
// Install Pargoon.Extensions.Linq as a Cake Addin #addin nuget:?package=Pargoon.Extensions.Linq&version=1.0.6 // Install Pargoon.Extensions.Linq as a Cake Tool #tool nuget:?package=Pargoon.Extensions.Linq&version=1.0.6
Pargoon.Extensions.Linq
Overview
Pargoon.Extensions.Linq
is a C# library that enhances LINQ operations by providing a set of extension methods. These methods allow for conditional filtering and dynamic sorting of IQueryable<T>
collections, making it easier to build flexible and maintainable queries.
Features
- Conditional Filtering: Use
WhereIf
to apply filters only when a specified condition is true. - Dynamic Sorting: Sort collections based on property names and directions specified at runtime, with support for sorting on multiple properties.
- Supports Custom Comparers: Sorting methods support custom comparers for advanced sorting scenarios.
Installation
To use the Pargoon.Extensions.Linq
library, add the source file to your project or compile it into a DLL and reference it in your project.
Usage
1. Conditional Filtering (WhereIf
)
The WhereIf
extension method allows you to apply a filter to a query only if a specified condition is true.
using Pargoon.Extensions.Linq;
// Applying a filter conditionally
var filteredData = data.WhereIf(isActive, x => x.IsActive);
isActive
: A boolean condition.x => x.IsActive
: The predicate to apply ifisActive
is true.
2. Dynamic Sorting (Sorting
)
The Sorting
extension methods enable sorting collections based on property names and sort directions at runtime.
Single Property Sorting
using Pargoon.Extensions.Linq;
var sortedData = data.Sorting("PropertyName", SortDirection.Asc);
PropertyName
: The name of the property to sort by.SortDirection.Asc
: The direction to sort in (ascending or descending).
Multiple Property Sorting
You can sort by multiple properties by providing a list of SortItem
objects.
using Pargoon.Extensions.Linq;
var sortItems = new List<SortItem>
{
new SortItem { PropertyName = "FirstName", Direction = SortDirection.Asc },
new SortItem { PropertyName = "LastName", Direction = SortDirection.Desc }
};
var sortedData = data.Sorting(sortItems);
sortItems
: A list ofSortItem
objects specifying the properties and directions to sort by.
3. Custom Comparers
If you need to use a custom comparer for sorting, you can pass it as an optional parameter:
using Pargoon.Extensions.Linq;
var sortedData = data.Sorting("PropertyName", SortDirection.Asc, comparer: new CustomComparer());
CustomComparer
: Your customIComparer<object>
implementation.
Example
Here's a complete example using Pargoon.Extensions.Linq
in a typical scenario:
using Pargoon.Extensions.Linq;
var isActive = true;
var sortItems = new List<SortItem>
{
new SortItem { PropertyName = "FirstName", Direction = SortDirection.Asc },
new SortItem { PropertyName = "LastName", Direction = SortDirection.Desc }
};
var query = dbContext.Users
.WhereIf(isActive, x => x.IsActive)
.Sorting(sortItems);
var result = query.ToList();
In this example:
- Users are filtered by
IsActive
only ifisActive
istrue
. - The filtered results are sorted by
FirstName
in ascending order andLastName
in descending order.
Contributing
Contributions are welcome! If you find a bug or have a feature request, please open an issue or submit a pull request.
License
This library is licensed under the MIT License. See the LICENSE file for more details.
With Pargoon.Extensions.Linq
, you can build dynamic and flexible LINQ queries that improve the readability and maintainability of your code.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Pargoon.Core (>= 1.2.3)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Pargoon.Extensions.Linq:
Package | Downloads |
---|---|
Noyan.ShadMessage.ApiContracts
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.