コレクションをSQLのIN句のように検索するサンプルです。
サンプル
例1)list内の要素で、list2の要素に含まれるもののみ抽出する
using System.Collections.Generic;
using System.Linq;
// 元のコレクション
var list = new List<string>();
list.Add("札幌");
list.Add("仙台");
list.Add("横浜");
list.Add("名古屋");
list.Add("大阪");
list.Add("広島");
list.Add("福岡");
//検索する値(IN句にあたるもの)
var list2 = new List<string>();
list2.Add("仙台");
list2.Add("広島");
list2.Add("熊本");
//listの中でlist2に含まれるもののみ抽出する
var result = list.Where(x => list2.Contains(x)).ToList();
結果
仙台
広島
例2)配列の要素で、targetの要素とPriceが同じもののみ抽出する
using System.Linq;
// 配列
var items = new[]
{
new Item() {Code = 1, Name = "みかん", Price = 100},
new Item() {Code = 2, Name = "りんご", Price = 300},
new Item() {Code = 3, Name = "ぶどう", Price = 500}
};
// 条件(IN句にあたるもの)
var target = new int[] { 100, 500 };
// 抽出
var result = item.Where(x => target.Contains(x.Price));
結果
みかん、ぶどう
備考
- LINQなので、「using System.Linq;」の指定が必要です。
- 単数の値で検索したい場合はLINQを使わなくても実現できます。
詳細は以下関連記事をご覧ください。