Project Description


Remote Linq is a simple and easy to use library to translate Expression Trees from and to strongly typed, serializable expression trees. It's as easy as calling ToQueryExpression() and ToLinqExpression():

class Client
{
  Server service;

  public void QueryBusinessObjects()
  {
    // compose linq expression
    Expression<Func<BusinessObject, bool>> linqFilterExpression = (bObj) => 
      bObj.Name == "My BO Name" &&
      bObj.CreatedAt > new DateTime(2001, 12, 31);

    // translate linq expression into serializable expression tree
    Remote.Linq.Expressions.Expression queryFilterExpression = 
      linqFilterExpression.ToQueryExpression(); // transfer expression tree to server and retrieve result IList<BusinessObject> queryResult =
      service.QueryBusinessObjects(queryFilterExpression); } }
class Server
{
  IQueryable<BusinessObject> businessObjectQueriable;

  public IList<BusinessObject> QueryBusinessObjects(Remote.Linq.Expressions.Expression queryFilterExpression)
  {
    // translate remote query expression tree into linq expression 
    Expression<Func<BusinessObject, bool>> linqFilterExpression = 
      queryFilterExpression.ToLinqExpression<BusinessObject, bool>();

    // apply linq expression to IQueriable<>
    IQueryable<BusinessObject> queryExpression = 
      businessObjectQueriable.Where(linqFilterExpression); // execute query and return result to client IList<BusinessObject> queryResult = queryExpression.ToList(); return queryResult; } }

Supports .NET 3.5 Client Profile and above, Silverlight 4 and above.

Last edited Feb 19 at 7:50 PM by ChristofSenn, version 13