あるリストの要素を別のリストに追加する最も簡単な方法は何ですか?
たとえば、次の2つのリストがあります。
x個のアイテムを含むリストAy個のアイテムを含むリストB。
Bの要素をAに追加して、AにX+Yアイテムが含まれるようにします。これはループを使用して実行できることは知っていますが、このための組み込みメソッドはありますか?または他のテクニック?
あるリストの要素を別のリストに追加する最も簡単な方法は何ですか?
たとえば、次の2つのリストがあります。
x個のアイテムを含むリストAy個のアイテムを含むリストB。
Bの要素をAに追加して、AにX+Yアイテムが含まれるようにします。これはループを使用して実行できることは知っていますが、このための組み込みメソッドはありますか?または他のテクニック?
あなたの質問は、引数のすべての要素を、それが呼び出されるリストオブジェクトにコピーするList.AddRangeメソッドについて説明しています。
例として、スニペット
List<int> listA = Enumerable.Range(0, 10).ToList();
List<int> listB = Enumerable.Range(11, 10).ToList();
Console.WriteLine("Old listA: [{0}]", string.Join(", ", listA));
Console.WriteLine("Old listB: [{0}]", string.Join(", ", listB));
listA.AddRange(listB);
Console.WriteLine("New listA: [{0}]", string.Join(", ", listA));
プリント
Old listA: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Old listB: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
New listA: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
のすべての要素が呼び出しでlistB
追加されlistA
たことを示していAddRange
ます。
2つのリストに参加するには、次のことができます
listA.AddRange(listB); // listA will contain x+y items
また
// listC contains x+y items, listA and listB are unchanged.
var listC = listA.Concat(listB);
listA
代わりに後者を使用して再割り当てできます。
listA = listA.Concat(listB).ToList();
AddRange
ただし、最初に元のリストの1つを変更しても問題がない場合は、それ以上の利点はありません。