People use LINQ regularly, but how many people understand what is really going on behind the scenes? Under the hood of LINQ is a powerful concept called Expression Trees, and understanding how these work can help you to create smarter and more flexible code. We’ll take a look at Expression Trees basics, look at a helpful class called PredicateBuilder that lets you build more dynamic LINQ statements, and also look at how you can use Expression Trees to make your LINQ statements extremely flexible based upon user input. We’ll look at how you can also incorporate Expression Trees to make dynamic filtering a little easier and smarter.