In this six-part series, we want to experiment with expression trees and create two Enumerable and Queryable extensions helping us search through a collection of objects using a string keyword and list of properties in which we want to search. In the initial part of this article, we establish a foundational understanding of Delegates, Lambdas, and Expression Trees in C#. Delegates serve as references to methods, enabling dynamic method invocation. We exemplify their usage through a simple addition operation. Furthermore, we explore generic delegate types Func and Action, showcasing their application in function representation without custom type declarations. Lastly, we introduce the concepts of normal expressions and expression trees, emphasizing their differences and demonstrating how expression trees enable dynamic code manipulation. In the subsequent four posts, we delve into each component in detail, and the final post showcases practical experimentation with the code. Stay tuned for an in-depth exploration of C# coding concepts.