code: function orderBy(expression) {
  
          //Check arguments
          if (!expression)
              throw new Error("Expression is invalid");
  		
  		//Define sort action estracting values from objects
  		var sortAction = function(a, b){
  		
  			//Get value for "a" and "b" element
  			var aValue = expression(a);
  			var bValue = expression(b);
  		
  			//Check if one element is greater then the second one
  			if(aValue < bValue) return -1;
  			if(aValue > bValue) return 1;
  			return 0;
  		};
  		
  		//Copy array in order to avoid modifications on original
  		var outData = [];
  		for(var i = 0; i < this.items.length; i++){
  			outData.push(this.items[i]);
  		}
  
          //Define output array
          var sortedData = outData.sort(sortAction);
          
          //Return for chaining
          return new jslinq(sortedData);
      }
docs: #region "orderBy" Order elements using provided expression