C# Eval Expression LINQ Dynamic

Description

(All LINQ Dynamic methods are FREE to use)

Extend the IEnumerable<T> and IQueryable<T> interface with methods to use LINQ with dynamic expressions.

Since LINQ (Language Integrated Query) has been introduced in .NET 3.5, it has been one of the most used feature. ORM like Entity Framework takes advantage of this feature and allows you to write type-safe queries.

In theory, you should only use it to write type-safe queries. However, the reality often requires you to write LINQ with dynamic query expressions.

LINQ Dynamic - Predicate

You can use any LINQ method that supports predicate with a dynamic C# expression :

  • Deferred
    • OrderByDescendingDynamic
    • OrderByDynamic
    • SelectDynamic
    • SelectMany
    • SkipWhile
    • TakeWhile
    • ThenByDescendingDynamic
    • ThenByDynamic
    • Where
  • Immediate
    • All
    • Any
    • Count
    • First
    • FirstOrDefault
    • Last
    • LastOrDefault
    • LongCount
    • Single
    • SingleOrDefault

Example

var list = new List<int>() { 1, 2, 3, 4, 5 };

var list2 = list.WhereDynamic(x => "x > 2");
var list3 = list.WhereDynamic(x => "x > X", new { X = 2 }); // with parameter

Try it online

Example

var list = new List<int>() { 5, 2, 4, 1, 3 };

// SelectDynamic
var list2 = list.SelectDynamic(x => "new { y = x + 1 }");
var list3 = list.SelectDynamic(x => "new { y = x + 1 }", new { y = 1 });

// OrderByDynamic
var list4 = list.OrderByDynamic(x => "x + 1");
var list5 = list.OrderByDynamic(x => "x + Y", new { Y = 1 });

LINQ Dynamic - Execute

You can push the LINQ Dynamic experience further by using the Execute method and chaining anything else:

  • Execute
  • Execute<TResult>

Example

var list = new List<int>() { 1, 2, 3, 4, 5 };

var list2 = list.Execute<List<int>>("Where(x => x > 2).OrderBy(x => x).ToList()");
var list3 = list.Execute<List<int>>("Where(x => x > y).OrderBy(x => x).ToList()", new { y = 2 });

Contents