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.