Posts

Posts uit mei, 2011 tonen

C# Expression trees

Expression trees worden gebruikt in combinatie met LINQ. Een expression tree is een abstracte representatie van een lambda expressie. Een expression tree kan niet direct worden uitgevoerd. Met de compile() methode wordt in het geheugen de representatie gemaakt in de vorm van een object. Vervolgens kan via code de expressie worden benaderd. Zo gebuikt LINQ2SQL expression trees om de lambda code om te zetten naar een SQL querie. Dit is mogelijk omdat alle onderdelen (de nodes van de tree) van de lambda uitgelezen kunnen worden. Stel je deze lambda voor: x => x.Name == "Martijn" Deze expressie bevat een Body en de body bestaat uit de volgende onderdelen: Left property: Deze bevat de linkerkant van de expressie (x.Name) Right property: Deze bevat de rechterkant van de expressie ("Martijn") NodeType property: bevat de operatie die toegepast is op de twee expressies (==) Normaal gesproken (zeker bij uitgebreide lambda's) worden deze properties achterhaald d