AppSeedのアプリ開発ブログ

アプリ開発会社AppSeed(アップシード)開発担当のブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsや備忘録、アプリ開発に役立つ情報を発信します。

【Unity】2つのList配列から共通する値を探す方法(C#)

https://unity3d.com/files/images/ogimg.jpg?1

最近仕事で作っているアプリで「2つの配列から共通する値を探して処理する」という場面があったのですが意外とはまってしまいました。
慣れてくるとなんてことはないので他のList配列の処理方法と一緒に今後の為にメモ。



2つの配列から共通する値を探す方法

List<int> A = new List<int>();
List<int> B = new List<int>();

//AとBの配列にそれぞれ値を入れる

List<int> C= A.FindAll(B.Contains);

if(C.Count > 0)
{
  //AとBに共通して含まれる値が1個以上ある
  for (int i = 0; i < C.Count; i++)
  {
     Debug.Log("C i:"+i +" v:"+ C[i]); //共通する値を1つずつ取り出して表示
  }
}

docs.microsoft.com



配列の含まれる特定の値のindexを取得する方法

List<int> A = new List<int>();

//Aに値を入れる

int index = A.IndexOf("特定の値");
Debug.Log("index:"+index); //特定の値のindex


docs.microsoft.com


配列から特定の条件に絞った配列を新規作成する

List<int> A = new List<int>();

//Aに値を入れる

List<int> B = A.FindAll(n => n > 0); //値が0以下を取り除く

配列に特定の値が含まれるかチェックする

List<int> A = new List<int>();

//Aに値を入れる

if (A.Contains("含まれるか調べたい値") )
{
   //Aに含まれる
}

docs.microsoft.com


2つの配列が全て同じ値を含む配列かチェックする

List<int> A = new List<int>();
List<int> B = new List<int>();

//AとBの配列にそれぞれ値を入れる

if (A.SequenceEqual(B) )
{
   //AとBは同じ値を含む配列
}

docs.microsoft.com