コレクション LINQ

[C#] LINQラムダ式で検索する(.Where)

2021年6月12日

LINQラムダ式で検索するには .Where()を使用します。

サンプル

例1)List<int>を検索する


using System.Collections.Generic;
using System.Linq;

//int型のListを生成する
List<int> list = new List<int>() {1, 2, 3, 4, 5};

//listから3の要素のみ抽出する
var a = list.Where(x => x.Equals(3)).ToArray();

結果

3

例2)List<string>を検索する


using System.Collections.Generic;
using System.Linq;

//int型のListを生成する
List<string> list
 = new List<string>() {"鈴木","田中","木村","山田","大木"};


//要素が「田中」を検索する
var a = list.Where(x => x == "田中").ToArray();

//「木」を含む要素を検索する
var b = list.Where(x => x.Contains("木")).ToArray();

//「木」で始まる要素を検索する
var c = list.Where(x => x.StartsWith("木")).ToArray();

//「木」で終わる要素を検索する
var d = list.Where(x => x.EndsWith("木")).ToArray();

結果

a → 田中
b → 鈴木、木村、大木
c → 木村
d → 鈴木、大木

例3)データクラスを検索する


using System.Collections.Generic;
using System.Linq;

//データクラス(Prefクラス)
class Pref{
  public int No {get; set;}
  public string Name {get; set;}
  public int Population {get; set;}
}

var list = new List<Pref>();
list.Add(new Pref{No=1, Name="北海道", Population=5381733});
list.Add(new Pref{No=2, Name="青森県", Population=1308265});
list.Add(new Pref{No=3, Name="岩手県", Population=1279594});
list.Add(new Pref{No=4, Name="宮城県", Population=2333899});
list.Add(new Pref{No=5, Name="秋田県", Population=1023119});


//Noが2の要素を検索する
var a = list.Where(x => x.No == 2).ToArray();

//(AND検索)Nameに「県」を含むかつ、Populationが200万以上の要素を検索する
var b
 = list.Where(x => x.Name.Contains("県") && x.Population >= 2000000).ToArray();

//(OR検索)Nameに「道」を含むまたは、Populationが110万以下の要素を検索する
var c
 = list.Where(x => x.Name.Contains("道") || x.Population <= 1100000).ToArray();

結果

a → [2 青森県 1308265]
b → [4 宮城県 2333899]
c → [1 北海道 5381733],[5 秋田県 1023119]

備考

  • LINQを使用するには、「using System.Linq;」の宣言が必要です。

-コレクション, LINQ