private void ApplyJoins(SerializableQuery sourceQuery, IEnumerable <Join> joins)
 {
     sourceQuery.Joins = new List <SerializableJoin>();
     foreach (var joinItem in joins)
     {
         var serializedJoin = new SerializableJoin();
         ApplyJoinCondition(serializedJoin, joinItem.Condition);
         ApplySourceExpressions(serializedJoin, joinItem.SourceExpression);
         sourceQuery.Joins.Add(serializedJoin);
     }
 }
 private void ApplyJoinCondition(SerializableJoin join, QueryCondition sourceCondition)
 {
     join.Conditions = new List <SerializableCondition>();
     foreach (QueryCondition conditionItem in sourceCondition)
     {
         var condition = new SerializableCondition()
         {
             ConditionType    = conditionItem.ConditionType,
             IsNot            = conditionItem.IsNot,
             LogicalOperation = conditionItem.LogicalOperation
         };
         condition.LeftExpression   = MapLeftExpression(conditionItem.LeftExpression);
         condition.RightExpressions = MapRightExpression(conditionItem.RightExpressions);
         join.Conditions.Add(condition);
     }
 }