/// <summary> /// Order.Qty > 100 and Order.Customer = "Zhang San" /// 100>Order.Price /// </summary> /// <returns></returns> public ExpressionContext On() { var orderParam = new ParameterExpression() { Name = "Order", Alia = "Dest", Type = typeof(Order) }; var exp = orderParam.Member("Qty") .GT(new ConstantExpression(100)) .And(orderParam.Member("Customer") .Equal(new ConstantExpression("Zhang San"))); return new ExpressionContext { Parameters = new List<ParameterExpression> { orderParam }, Expression = exp, }; }
/// <summary> /// Src join Dest on Src.Id = Dest.SourceOrder /// </summary> /// <returns></returns> public Expression Join() { var fromParam = new ParameterExpression() { Name = "Order", Alia = "Src", Type = typeof(Order) }; var destParam = new ParameterExpression() { Name = "Order", Alia = "Dest", Type = typeof(Order) }; var joinOnCriteria = fromParam.Member("Id") .Equal(destParam.Member("SourceOrder")); var join = fromParam.Join(destParam, joinOnCriteria); return join; }