Archive<< September 2020 >>
- TMS FNC UI Pack v3.2 Revealing some highly anticipated components
- Hands-on: Building web design for a RAD Studio TMS WEB Core project
- TMS WEB Core Academic is here for Delphi developers!
- Get started with TMS WEB Core for Visual Studio Code
- Online event: The Theory and Practice of Amazing Desktop Application UI & UX
- TMS FNC Maps updates!
- TMS Subscription Manager v2.1 released
- Documenting your Delphi REST API the easy way
- TMS WEB Core for Visual Studio Code v1.0 released
- Edge Chromium Stable Support!
- Adrian Gallero (22)
- Bart Holvoet (5)
- Bernard Roussely (1)
- Bruno Fierens (261)
- Gjalt Vanhouwaert (6)
- Holger Flick (15)
- Marcos Douglas B. Santos (5)
- Masiha Zemarai (51)
- Nancy Lescouhier (32)
- Pieter Scheldeman (35)
- Roman Yankovsky (2)
- Tunde Keller (10)
- Wagner R. Landgraf (67)
BlogAll Blog Posts | Next Post | Previous Post
Monday, March 06, 2017LINQ Projections is the runner-up feature of My Top 10 Aurelius Features. It's a sort of "sequel" of the #5 feature LINQ Expressions and Paging, and you can see it in action in the video below.
You could consider that "LINQ Expressions" and "LINQ Projections" are just sides of the same feature. That's not incorrect indeed. But LINQ is a so nice feature of TMS Aurelius that it deserved to be split in two parts. And the reason that projections (and not expression) is ranked higher is just because it's at the core of LINQ.
The coolness of LINQ is more due projections than expressions in my opinion. An expression is actually just a comparison of two projections. It's in the projections that all complexity lies in. And it allows beautiful and complex queries like the following to be written:
Get the unit price and quantity of each order detail, multiply them, and group the sum of it by the year of Order Date.
Yes, projections allow you to do grouping, counting, sum, arithmetic operations, extract information from dates like year, month, day, from strings like substring, pos, etc. A full list of available projections is in Aurelius documentation. And everything just translated correctly to the underlying SQL syntax!
Manager.Find<TOrder> .CreateAlias('OrderDetails', 'd') .Select(TProjections.ProjectionList .Add(Linq['OrderDate'].Year.Group.As_('Group')) .Add((Linq['d.UnitPrice'] * Linq['d.Quantity']).Sum.As_('Value')) ) .Where(Linq['OrderDate'].Year._In([1997, 1998])) .OrderBy('Value')
Cool, isn't it? You can see queries like the ones above in action, by watching the video above. Don't forget to subscribe to our YouTube channel to get notified about upcoming videos!
Wagner R. Landgraf
This blog post has not received any comments yet.
All Blog Posts | Next Post | Previous Post