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;」の宣言が必要です。