次の例では、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行目

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

\r, \n, \r\nが混在する文字列の分割はTextReaderを使うことでも行えます。 例として、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);
    }
  }
}

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