First it makes a copy of the text in the DataTextBox.Text property.
string data = DataTextBox.Text
Then instantiates a new List<string>, with the data returned by the Split call.
List<string> gradeString = new List<string>(data.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries));</string></string>
The (data.Split(new string[] { "\r\n" }, StringSplitOption.RemoveEmptyEntries))
actuall searches data for "\r\n" and adds anything to the left to an array (except emtpy strings, then skips to the next "\r\n".
The List<string> is then populated with the contents of the array since it is an IEnumerable<t>.
So, to break it down further..
string test = "Look at how\r\nthis works!";
string[] split = test.Split(new string[] { "\r\n" });
List<string> testSplit = new List<string>(split);
</string></string>
The next portion does a convert all on the list, given the generic type and a converter.
<int></int>
is the generic type and
Convert.ToInt32
is the converter.
This basically says, i want the contents of gradeString to be converted to a List if int types.
intList.Sort()
sorts the list in ascending order.