Introduction of Lambda Expression and Predicate BuilderBryan lin
2014/03/07
Agenda
• Lambda Expression
• PredicateBuilder
• Implementation of PredicateBuilder
Lambda expression
• What is a Lambda Expression?
• A lambda expression is an anonymous function and it is mostly used to create delegates in LINQ. Simply put, it's a method without a declaration, i.e., access modifier, return value declaration, and name.
Lambda expression
• Why do we need lambda expressions? (Why would we need to write a method without a name?)
• Convenience. It's a shorthand that allows you to write a method in the same place you are going to use it. Especially useful in places where a method is being used only once, and the method definition is short. It saves you the effort of declaring and writing a separate method to the containing class.
Lambda expression
• Benefits:
• Reduced typing. No need to specify the name of the function, its return type, and its access modifier.
• When reading the code you don't need to look elsewhere for the method's definition.
Lambda expression
• Lambda expressions should be short. A complex definition makes the calling code difficult to read.
Lambda expression
• How do we define a lambda expression?
• Lambda basic definition: Parameters => Executed code.
PredicateBuilder
• Background
• Dynamic Predicate Construction
• You allow the user to pick, from a check box list, any of the fields that will be included in the query, and to specify the criteria
PredicateBuilder
PredicateBuilder
• Background
• Dynamic Predicate Construction
• You can do a bunch of switch-ing if logic to figure out what kind of query to render by adding a piece of it at a time
• Or you can use lambdas and the PredicateBuilder to inject multiple predicates into an expression tree
PredicateBuilder
• Using the Code
• To combine the two criteria below:
PredicateBuilder
• Using the Code
• Do with the PredcateBuilder:
PredicateBuilder
• Using the Code
• And then:
Implementation of PredicateBuilder
• Implmentation of and logic:
Implementation of PredicateBuilder
• Implementation of or logic:
References
• http://www.codeproject.com/Tips/298963/Understand-Lambda-Expressions-in-3-minutes
• http://www.codeproject.com/Articles/28580/LINQ-and-Dynamic-Predicate-Construction-at-Runtime
• http://www.albahari.com/nutshell/predicatebuilder.aspx
FAQ