次の例では、Regex.Splitメソッドを用いて、\r\n, \r, \nのいずれかを改行とみなして文字列を行毎に分割しています。

Regex.Splitメソッドを使って複数の改行文字を区切りとして文字列を行ごとに分割する
using System;
using System.Text.RegularExpressions;

class Sample {
  static void Main()
  {
    var text = "1行目\r\n2行目\n3行目\r4行目\n\r6行目";

    // "\r\n", "\r", "\n"を改行文字として、文字列を行ごとに分割する
    var lines = Regex.Split(text, @"\r\n|\r|\n");

    foreach (var line in lines) {
      Console.WriteLine(line);
    }
  }
}
実行結果
1行目
2行目
3行目
4行目

6行目

Regex.Splitメソッドでは、区切りの正規表現がグループ化されているか・キャプチャされるグループかどうかによって、区切りの文字列となる文字列も含めて返されるかどうかが変わります。 上記の例において、区切りの正規表現を(\r\n|\r|\n)のようにカッコで括ってグループ化すると、Regex.Splitメソッドは正規表現にマッチした部分の文字列も含めて返すようになります。 この動作について詳しくは正規表現の構造化および処理(マッチ・グループ・キャプチャ) §.グループ化された正規表現による分割 (Regex.Split)で解説しています。

\r, \n, \r\nが混在する文字列の分割はTextReaderを使うことでも行えます。 例として、StringReaderを使った行分割は次のように行うことができます。

StringReaderを使って文字列を行ごとに分割する
using System;
using System.IO;

class Sample {
  static void Main()
  {
    var text = "1行目\r\n2行目\n3行目\r4行目\n\r6行目";
    var r = new StringReader(text);

    for (;;) {
      var line = r.ReadLine();

      if (line == null) break;

      Console.WriteLine(line);
    }
  }
}
StringReaderを使って文字列を行ごとに分割する
Imports System
Imports System.IO

Class Sample
  Shared Sub Main()
    Dim text As String = "1行目" + vbCrLf + "2行目" + vbLf + "3行目" + vbCr + "4行目" + vbLf + vbCr + "6行目"
    Dim r As New StringReader(text)

    Do
      Dim line As String = r.ReadLine()

      If line Is Nothing Then Exit Do

      Console.WriteLine(line)
    Loop
  End Sub
End Class

TextReaderを使った行ごとの読み込みに関してはStreamReaderクラス・StreamWriterクラス §.1行ずつの読み込み (ReadLine)、StringReaderについてはStringReaderクラス/StringWriterクラス §.StringReaderクラスで解説しています。