FC2ブログ
02 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 04

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】Listの特定のアイテムを取り出す時って、Findを使ってますか?Linqを使ってますか? 

こんにちは!坂内です!

UnityでListから特定のアイテムを取り出す場合、Find使ってますか?Linqを使ってますか?

Findを使う場合はこんな感じ。
(複数取り出すのでFindAllを使ってます)

[TestClass.cs]

using System.Collections.Generic;
using UnityEngine;

public class Test0323 : MonoBehaviour
{
public class TestClass {
public int no;
public string name;
}
public List<TestClass> testClasses;

void Start()
{
testClasses = new List<TestClass>();
// 初期データ
for(int i = 0; i < 10; i++) {
TestClass testClass = new TestClass();
testClass.no = i;
testClass.name = "Name:" + i;
testClasses.Add(testClass);
}
ViewTestClass(testClasses);

// iが2と5の物だけを出力
List classes25 = new List<TestClass>();
classes25 = testClasses.FindAll(x => x.no == 2 || x.no == 5);
ViewTestClass(classes25);
}

void ViewTestClass(List<TestClass> args) {
Debug.Log("-----------------------------------------------");
foreach(TestClass testClass in args) {
Debug.Log("No:" + testClass.no + "/Name:" + testClass.name);
}
}
}





同じことはLinqでもできますね。


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

public class Test0323 : MonoBehaviour
{
public class TestClass {
public int no;
public string name;
}
public List<TestClass> testClasses;

void Start()
{
testClasses = new List<TestClass>();
// 初期データ
for(int i = 0; i < 10; i++) {
TestClass testClass = new TestClass();
testClass.no = i;
testClass.name = "Name:" + i;
testClasses.Add(testClass);
}
ViewTestClass(testClasses);

// iが2と5の物だけを出力
var classes25 = testClasses.Where(x => x.no == 2 || x.no == 5);
ViewTestClass(classes25);
}

void ViewTestClass(IEnumerable<TestClass> args) {
Debug.Log("-----------------------------------------------");
foreach(TestClass testClass in args) {
Debug.Log("No:" + testClass.no + "/Name:" + testClass.name);
}
}
}



LinqではFindの代わりにWhereを使うことで特定のアイテムを取り出すことが可能です。

LinqはUsing System.Linq;を書かないといけません。
また、戻り値はListではなくIEnumerableになります。

使いやすいほうを是非お使いください。

ってことで、Listデータの絞込についてでした!あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0