【C#】LINQの使用例【LINQ】
C#機能バージョン対応表作成しました。
こちらの記事も合わせてご覧ください。
LinQの使用例を記載します。
以下にも類似内容が記載されています。
データクラス作成します
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 32 33 34 35 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MonsterStatus { /// <summary>番号</summary> public int MonsterNo { set; get; } /// <summary> 名前</summary> public string MonsterName { set; get; } /// <summary>体力</summary> public int HitPoint { set; get; } /// <summary>攻撃力 </summary> public int AttackPoint { set; get; } /// <summary>レベル </summary> public int Level { set; get; } /// <summary> レア度 </summary> public int Rarity { set; get; } public MonsterStatus(int monsterNo, string monsterName, int hitPoint, int attackPoint, int level, int rarity) { MonsterNo = monsterNo; MonsterName = monsterName; HitPoint = hitPoint; AttackPoint = attackPoint; Level = level; Rarity = rarity; } } |
次にリストにデータを格納します
1 2 3 4 5 6 7 8 9 10 11 |
var monsterList = new List<MonsterStatus>(); monsterList.Add(new MonsterStatus(25, "チョッ○ー", 5, 10, 15, 6)); monsterList.Add(new MonsterStatus(6, "ド○え○ん", 7, 8, 95, 5)); monsterList.Add(new MonsterStatus(2, "ア○パン○ン", 10, 30, 80, 2)); monsterList.Add(new MonsterStatus(1, "スラ○ム", 2, 2, 3, 1)); monsterList.Add(new MonsterStatus(30, "し○じ○う", 3, 2, 70, 3)); monsterList.Add(new MonsterStatus(12, "ピカチ○ウ", 15, 30, 10, 3)); monsterList.Add(new MonsterStatus(12, "リアジュウ", 1, 1, 1, 99)); monsterList.Add(new MonsterStatus(16, "カ○ビ○ー", 6, 9, 60, 4)); |
【例1】 レア度が4以上のキャラを MonsterNo が昇順に取得する場合
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var query = from x in monsterList where x.Rarity >= 4 orderby x.MonsterNo select x; foreach (var item in query) { Debug.Log(" | MonsNo = " + item.MonsterNo + " | MonsName = " + item.MonsterName + " | HitPoint = " + item.HitPoint + " | AttackPoint = " + item.AttackPoint + " | Level = " + item.Level + " | Rarity = " + item.Rarity); } |
各キャラの全要素を取得しています。
表示結果は以下になります

【例2】
攻撃力が高い順にキャラの名前を表示させる場合
1 2 3 4 5 6 7 8 9 |
var query2 = from x in monsterList orderby x.AttackPoint descending select x.MonsterName; foreach (var item in query2) { Debug.Log(" | MonsName = " + item); } |
今回は名前以外不要だったため、あらかじめ名前のみを取得するよう、処理を記載しています
表示結果は以下になります

ゲームでよく登場するモンスター図鑑のソート機能などで利用できそうですね。