Project Description

InterLINQ is an IQueryable Provider implementation. LINQ stands for Language Integrated Query and is one of the most important and powerful features of the new .NET 3.5 Technology. A LINQ Query is represented by an Expression Tree.

Multi-Tier functionality is not provided by LINQ, but this new technology makes it possible by serializing a the Expression Tree of the LINQ Query and sending it to a WCF Service. The Remote Service deserializes this Expression Tree and starts the execution. Return value of the Remote Service's called method is the result of the executed query.

Sample Usage

One of the goals in this project is to the behaviour like in LINQ to SQL. Here an example how to use InterLINQ.


// Connect to the server
ClientQueryWcfHandler clientQueryHandler = new ClientQueryWcfHandler();

// Create a context
SimpleExampleContext simpleExampleContext = new SimpleExampleContext( clientQueryHandler );

// Use LINQ as usual
var selectAllSimpleObjects = from so in simpleExampleContext.SimpleObjects
                              select so;


// Get a IQueryHandler (see for adapters to LINQ to Objects, LINQ to SQL, etc.)
IQueryHandler queryHandler = new ObjectQueryHandler( new ExampleObjectSource() );

// Publish the service
using( ServerQueryWcfHandler serverQueryHandler = new ServerQueryWcfHandler( queryHandler ) ) {


  • All features of LINQ!
  • Querying of anonymous types ( select new { ... } )
  • Adapter for several LINQ technologies.
  • Will be built into a future Version of ( This enables Change Tracking and Write Access.


  • InterLINQ 0.2 Released


Pascal Schaefer

Manuel Bauer

  • Research associate at Institute of Networked Solutions INS at University of Applied Sciences of Eastern Switzerland (Rapperswil) (
  • Swiss Software Solution Center (

Last edited Mar 27, 2008 at 10:27 AM by domcon, version 8