[C#]リストの要素を条件で検索して取得するには?

C#

どうも、ちょげ(@chogetarou)です。

リスト(List)の要素を条件で検索して取得する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

リスト(List)の要素を条件で検索して取得する方法は、3つあります。

Find()

1つ目は、Find()を使う方法です。

まず、リストからFind()を呼び出します。

Find()の引数に、引数1つのラムダ式を指定します。

ラムダ式で、要素の条件式を返します。
(ラムダ式では、引数でリストの要素を取得します。)

//myList=対象のリスト, condition=要素の条件式
T result = myList.Find(item => condition);

上記のFind()は、リスト内を指定した条件で検索して、最初に条件にマッチした要素を取得します。

使用例

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()を呼び出します。

Find()の引数に、引数1つのラムダ式を指定します。

ラムダ式で、要素の条件式を返します。
(ラムダ式では、引数でリストの要素を取得します。)

//myList=対象のリスト, condition=要素の条件式
T result = myList.FindAll(item => condition);

上記のFind()は、リスト内を指定した条件で検索して、条件にマッチしたすべての要素を取得します。

使用例

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()は、リスト内を指定した条件で検索して、条件にマッチしたすべての要素を取得します。

Where()は、ラムダ式で検索した結果をEnumerableで返します。

なので、ToList()を呼び出さない場合は、結果がEnumerableになります。

使用例

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();

コメント

タイトルとURLをコピーしました