GetRangeメソッドを使うと、Listの一部分のみを複製したList(Listのサブセット)を作成することができます。

GetRangeメソッドを使ってListの一部分を切り出したListを作成する
using System;
using System.Collections.Generic;

class Sample {
  static void Main()
  {
    List<string> list = new List<string>() {"Alice", "Bob", "Charlie", "Dave", "Eve"};

    // listのインデックス2から3つ分を切り出したListを作成する
    List<string> sublist = list.GetRange(2, 3);

    Print(sublist);
  }

  static void Print(List<string> list)
  {
    foreach (string e in list) {
      Console.Write("{0}, ", e);
    }

    Console.WriteLine();
  }
}
実行結果
Charlie, Dave, Eve, 

このメソッドによる複製では簡易コピーが行われるため、参照型を要素に持つListの場合は参照のみがコピーされます。 簡易コピーについてより詳しくはオブジェクトの複製で解説しています。

このメソッドは、部分配列を構成するArraySegment構造体と似ていますが、元の配列に対するビューとして動作するArraySegmentとは異なり、GetRangeメソッドが返すListは元のListを複製したものになります。 従って、元になったList・GetRangeメソッドによって取得したListに変更を加えても、もう一方に影響が及ぶことはありません。