【ハルシオンブログ】Listの特定のアイテムを取り出す時って、Findを使ってますか?Linqを使ってますか?
こんにちは!坂内です!
UnityでListから特定のアイテムを取り出す場合、Find使ってますか?Linqを使ってますか?
Findを使う場合はこんな感じ。
(複数取り出すのでFindAllを使ってます)
[TestClass.cs]

同じことはLinqでもできますね。
LinqではFindの代わりにWhereを使うことで特定のアイテムを取り出すことが可能です。
LinqはUsing System.Linq;を書かないといけません。
また、戻り値はListではなくIEnumerableになります。
使いやすいほうを是非お使いください。
ってことで、Listデータの絞込についてでした!あでゅ~ノシ
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)
« 【ハルシオンブログ】新しくクラスを作らないでメソッドから複数の戻り値を受け取りたいとき | 【ハルシオンブログ】LinqのAny使っていますか? »
コメント
| h o m e |