A .NET library for writing dynamic LINQ queries using string expressions, supporting .NET Core, .NET Standard, and .NET Framework.
System.Linq.Dynamic.Core is a .NET library that allows developers to construct LINQ queries dynamically using string expressions. It solves the problem of building queries at runtime, such as when filter conditions, sorting, or projections are not known until execution time. This is especially useful for applications with dynamic search interfaces or configurable data access layers.
.NET developers building data-driven applications that require runtime query composition, such as dynamic reporting tools, admin dashboards, or APIs with flexible filtering options.
Developers choose this library because it provides a secure and well-maintained port of the original Microsoft Dynamic LINQ functionality for modern .NET platforms. It offers extensive configurability, security mitigations, and support for interpolated strings, making dynamic query building safer and more expressive.
The .NET Standard / .NET Core version from the System Linq Dynamic functionality.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables runtime construction of LINQ queries using string expressions, allowing for user-defined filters and sorts without code changes, as shown in the README's Where and OrderBy examples.
Offers configurable security measures like restricted method calls on object types and property-only OrderBy to mitigate injection risks, detailed in the v1.6.0 breaking changes.
Supports a wide range of .NET frameworks from .NET 3.5 to .NET 9.0, including .NET Core and Standard, ensuring it works across legacy and modern applications.
Provides WhereInterpolated and similar methods for safer, readable dynamic queries using interpolated strings on supported .NET versions, enhancing code clarity.
Security updates like v1.6.0 introduce breaking changes that disable methods on object by default, forcing code adjustments or config tweaks, which can disrupt existing projects.
Using custom types or methods requires annotating classes with [DynamicLinqType] or implementing custom providers, adding setup complexity compared to static LINQ.
Parsing string expressions at runtime incurs overhead versus compile-time lambdas, potentially impacting performance in query-intensive applications.