【C#】Listの検索・追加・削除メソッドの使い方

Listの検索・追加・削除メソッドの使い方をまとめます。

【検証環境】.NET Framework 4.7.2

要素の検索

Find / FindLast

FInd メソッドはListから指定した条件を満たす最初の要素を返します。
FindLast メソッドはList全体を検索して、指定した条件と一致する最後の要素を返します。
どちらも条件に一致する要素がない場合、初期値を返します。

//1~9のリスト生成
List<int> nums = Enumerable.Range(1, 9).ToList();
//条件と一致する最初の要素を返す
int find1 = nums.Find(n => n > 5);  // 6 
int find2 = nums.Find(n => n > 10); // 0(初期値)
//条件と一致する最後の要素を返す
int findLast1 = nums.FindLast(n => n > 5);  // 9
int findLast2 = nums.FindLast(n => n > 10); // 0(初期値)

Find メソッドは FirstOrDefault メソッドと非常に似ています。
違いとしては、FirstOrDefaultはIEnumerable型の拡張メソッドで、FindはList型のメソッドです。
List型はIEnumerable型を実装しているのでFirstOrDefaultも使えますが、IEnumerable型だとFindは使えません。
速度的には若干Findのほうが早いらしいです。

FirstOrDefaultメソッドで統一して良いと思います。

FindAll

FindAll メソッドはListから指定した条件と一致するすべての要素を返します。
条件に一致する要素がない場合、空のListを返します。

//1~9のリスト生成
List<int> nums = Enumerable.Range(1, 9).ToList();
//条件と一致するすべての要素を返す
List<int> findAll1 = nums.FindAll(n => n > 5);  // Count = 4
List<int> findAll2 = nums.FindAll(n => n > 10); // Count = 0

FindIndex / FindLastIndex

FindIndex メソッドはListから指定した条件と一致する最初の要素のインデックスを返します。
FindLastIndex メソッドはListから指定した条件と一致する最後の要素のインデックスを返します。
どちらも条件に一致する要素がない場合、-1を返します。

//1~9のリスト生成
List<int> nums = Enumerable.Range(1, 9).ToList();
//条件と一致する最初の要素のインデックスを返す
int findIndex1 = nums.FindIndex(n => n > 5);    // 5
int findIndex2 = nums.FindIndex(n => n > 10);   // -1
//条件と一致する最後の要素のインデックスを返す
int findLastIndex1 = nums.FindLastIndex(n => n > 5);    // 8
int findLastIndex2 = nums.FindLastIndex(n => n > 10);   // -1

Exists

Exists メソッドはListから指定した条件と一致する要素が存在するかを判定します。

//1~9のリスト生成
List<int> nums = Enumerable.Range(1, 9).ToList();
//条件と一致する要素が存在するか
bool exists = nums.Exists(n => n > 5); // true

Exists メソッドは Any メソッドと非常に似ています。
違いとしては、AnyはIEnumerable型の拡張メソッドで、ExistsはList型のメソッドです。
List型はIEnumerable型を実装しているのでAnyも使えますが、IEnumerable型だとExistsは使えません。
速度的には若干Existsのほうが早いらしいです。

Anyメソッドで統一して良いと思います。

要素の追加

Add

Add メソッドはListの末尾に指定した要素を追加します。

//1~9のリスト生成
List<int> nums = Enumerable.Range(1, 9).ToList();
//末尾に11追加
nums.Add(11);

//IEnumerable型の場合
IEnumerable<int> enumerable = Enumerable.Range(1, 9);
enumerable = enumerable.Append(11);

Insert

Insert メソッドはListの指定した位置に要素を挿入します。

//1~9のリスト生成
List<int> nums = Enumerable.Range(1, 9).ToList();
//先頭に0追加
nums.Insert(0, 0);

要素の削除

Remove

Remove メソッドはListの指定した要素を削除します。
正常に削除が行われた場合trueを、それ以外の場合はfalseを返します。
要素が存在しない場合もfalseを返します。
また、複数の同一要素があった場合は最初に見つかった単一要素のみ削除されます。

//1~9のリスト生成
List<int> nums = Enumerable.Range(1, 9).ToList();
//空のリスト生成
List<int> empty = Enumerable.Empty<int>().ToList();

//指定した要素の削除
bool remove1 = nums.Remove(1); // true
bool remove2 = empty.Remove(0); // false

RemoveAll

RemoveAll メソッドはListの指定した条件に一致するすべての要素を削除します。
削除した要素数を返します。

//1~9のリスト生成
List<int> nums = Enumerable.Range(1, 9).ToList();
//※削除した要素数を返す
var removeAll = nums.RemoveAll(n => n >= 5); // 5

Clear

Clear メソッドはListのすべての要素を削除します。

//1~9のリスト生成
List<int> nums = Enumerable.Range(1, 9).ToList();
//すべての要素の削除
nums.Clear(); // Count = 0

Leave a Reply

Your email address will not be published. Required fields are marked *