AddRangeメソッドでは、指定されたコレクションのすべての内容を追加します。 一部分だけを追加することができるオーバーロードは用意されていません。
LINQのSkipメソッドとTakeメソッドを使ってコレクションの一部を取り出すことにより、一部分だけをListに追加することができます。 この方法はListだけでなく配列を含む任意のコレクションに対して用いることができます。
SkipメソッドとTakeメソッドを使ってコレクションの一部をListに追加する
using System;
using System.Collections.Generic;
using System.Linq;
class Sample {
static void Main()
{
// Listへ格納したい内容をもったコレクション
var source = new List<int>() {0, 1, 2, 3, 4};
// 追加先となるList
var list = new List<int>();
// sourceのインデックス1から3つ分の要素をlistに追加する
// (sourceの先頭から1つ分の要素はスキップし、それに続く3つの要素を取り出して追加する)
list.AddRange(source.Skip(1).Take(3));
Print(list);
}
static void Print(List<int> list)
{
foreach (var e in list) {
Console.Write("{0}, ", e);
}
Console.WriteLine();
}
}
実行結果
1, 2, 3,