コレクション

[C#] コレクションをIN句のように検索する

2021年9月15日

コレクションを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を使わなくても実現できます。
    詳細は以下関連記事をご覧ください。

関連記事

-コレクション
-