どうも、ちょげ(@chogetarou)です。
リスト(List)の要素をラムダ式で検索する方法を紹介します。
方法

リスト(List)の要素をラムダ式で検索する方法は、3つあります。
Find()
1つ目は、Find()を使う方法です。
まず、リストからFind()を呼び出します。
Find()の引数に、要素の条件式を返す引数1つのラムダ式を指定します。
ラムダ式は、引数でリストの要素を取得します。
//myList=対象のリスト, condition=要素の条件式
T result = myList.Find(item => condition);
上記のFind()は、リスト内をラムダ式の条件式で検索して、最初にtrueを返した要素を取得します。
使用例
using System;
using System.Collections.Generic;
public class Example
{
public static void Main()
{
List<string> nums = new List<string>() { "one", "two", "three", "four", "five" };
string result = nums.Find(item => item.Length == 5);
Console.WriteLine(result);
}
}
出力:
three
FindAll()
2つ目は、FindAll()を使う方法です。
まず、リストからFindAll()を呼び出します。
FindAll()の引数に、要素の条件式を返す引数1つのラムダ式を指定します。
ラムダ式は、引数でリストの要素を取得します。
//myList=対象のリスト, condition=要素の条件式
T result = myList.FindAll(item => condition);
上記のFindAll()は、リスト内をラムダ式の条件式で検索して、trueを返したすべての要素を取得します。
使用例
using System;
using System.Collections.Generic;
public class Example
{
public static void Main()
{
List<string> nums = new List<string>() { "one", "two", "three", "four", "five" };
List<string> result = nums.FindAll(item => item.Length == 3);
foreach(string item in result){
Console.WriteLine(item);
}
}
}
出力:
one
two
System.Linq
3つ目は、System.Linqを使う方法です。
まず、System.Linqを導入します。
using System.Linq;
次に、リストからWhere()を呼び出します。
Where()の引数に、条件式を返す引数1つのラムダ式を指定します。
ラムダ式では、リストの要素を引数で取得します。
そして、Where()からToList()を呼び出します。
//myList=対象のリスト, condition=条件式
List<T> result = myList.Where(item =>condition).ToList();
上記のWhere()とToList()は、リスト内をラムダ式の条件式で検索し、条件式でtrueを返した要素をすべて取得します。
使用例
using System;
using System.Collections.Generic;
using System.Linq;
public class Example
{
public static void Main()
{
List<int> nums = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> result = nums.Where(item => item % 3 == 0).ToList();
foreach (int item in result) {
Console.WriteLine(item);
}
}
}
出力:
3
6
9
まとめ
リスト(List)の要素をラムダ式で検索する方法は、次の3つです。
- Find()を使う方法
T result = myList.Find(item => condition);
- FindAll()を使う方法
T result = myList.FindAll(item => condition);
- System.Linqを使う方法
List<T> result = myList.Where(item =>condition).ToList();
コメント