This project is read-only.

LinqExtender 2.0

Rating:        Based on 2 ratings
Reviewed:  2 reviews
Downloads: 1374
Released: Feb 23, 2009
Updated: Apr 18, 2009 by mehfuzh
Dev status: Beta Help Icon

Recommended Download

Documentation GettingStarted.doc
documentation, 74K, uploaded Apr 6, 2009 - 555 downloads

Other Available Downloads

application, 69K, uploaded Apr 18, 2009 - 420 downloads
Source Code
source code, 501K, uploaded Apr 18, 2009 - 399 downloads

Release Notes

The release is focused on further simflication, easy item access by self delarative fluent interface, ability to include customized format provider for buiding literals and more.

Key Features

1. Simplified Two level (TreeNode and BucketItem) Expression tree for processing simple to complex where clause


2. Fluent interface implementation of Bucket. This gives a single entry and thus simplifies the effort.

3. No more Bucket reference pass thought the Query<T> overrides as Bucket can be access by fluent Bucket.Instance.

New singnature of Query<T> overrrides methos are

Process(IModify<T> items) : void
AddItem(): bool
GetItem() : T

4. Reusable format provider support for generating literals from Query<T> overrides. Out of the box, TSqlFormatProvider is provided.

  string sql = Bucket.Instance.Translate(new TSqlFormatProvider);

This will generate the eqavalent TSQL select statement when used from Query<T>.Process/ Query<T>.GetItem for Linq query and update, delete and insert statement when used from UpdateItem, RemoveItem and AddItem overrides.

More info on all these features can be found detailed at the supplied document.

Have fun!!!

Updated on 28th Feb 2009 => Added containder declaration in Bucket.Instance.ExpressionTree.
Updated on 5th April 2009 =>
Added LinqExtender.xml under DevelopmentPack\Libarary for VS inteillisence, copy it to your project directory if you use LinqExtender installer.
For nested object queries like
            var query = from custom in context
                        where custom.Data.ApplicationId == guid 
                        && custom.Data.Over.Data.Name1 == "Nick"
                        orderby  custom.Data.Name
                        select custom;

// from Query<T>.Process ,  Item("Data").Value will aggregate all the nested properties used in the query.
MetaDataOuter outer = (MetaDataOuter) Bucket.Instance.For.Item("Data").Value;

Use this only for simplified providers, for considering logical operators in where clause use Instance.ExpressionTree instead.

Updated on 18th April with minor patch and few refactors.

Reviews for this release

The solution is marvelous! After struggling with .Net Entity Framework I switched to LinqExtender and wrote a Linq provider for my project. Thanks!
by alnooralidina on May 21, 2009 at 11:23 AM
The new fluent interface is really elegant and easy to use. I had previously used release 1.5 (no support for OR in Where method) and I was wondering how it would be possible to implement complex logical expressions without losing the simplicity that makes this such a great project. The solution is superb! I wrote a Linq provider for a REST API in just a few hours! Well done and thanks!
by theblacklabrador on Apr 4, 2009 at 2:31 AM