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" />
<PackageVersion Include="Pargoon.Extensions.Linq" Version="1.0.6" />
<PackageReference Include="Pargoon.Extensions.Linq" />
paket add Pargoon.Extensions.Linq --version 1.0.6
#r "nuget: Pargoon.Extensions.Linq, 1.0.6"
#:package Pargoon.Extensions.Linq@1.0.6
#addin nuget:?package=Pargoon.Extensions.Linq&version=1.0.6
#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
WhereIfto 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 ifisActiveis 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 ofSortItemobjects 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
IsActiveonly ifisActiveistrue. - The filtered results are sorted by
FirstNamein ascending order andLastNamein 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. net9.0 was computed. 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. |
| .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.