public new IXLRange Sort(String columnsToSortBy, XLSortOrder sortOrder = XLSortOrder.Ascending, Boolean matchCase = false, Boolean ignoreBlanks = true) { var toSortBy = new StringBuilder(); foreach (string coPairTrimmed in columnsToSortBy.Split(',').Select(coPair => coPair.Trim())) { String coString; String order; if (coPairTrimmed.Contains(' ')) { var pair = coPairTrimmed.Split(' '); coString = pair[0]; order = pair[1]; } else { coString = coPairTrimmed; order = "ASC"; } Int32 co; if (!Int32.TryParse(coString, out co)) { co = Field(coString).Index + 1; } toSortBy.Append(co); toSortBy.Append(" "); toSortBy.Append(order); toSortBy.Append(","); } return(DataRange.Sort(toSortBy.ToString(0, toSortBy.Length - 1), sortOrder, matchCase, ignoreBlanks)); }