using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Linq; public class XXX : MonoBehaviour { public struct playerDataStruct { public string nickName; public int age; public int score; } private Dictionary<string, playerDataStruct> playerDataDictionary = new Dictionary<string, playerDataStruct>(); private playerDataStruct tempPlayerDataStruct = new playerDataStruct(); void Start () { tempPlayerDataStruct.nickName = "Warrior"; tempPlayerDataStruct.age = 18; tempPlayerDataStruct.score = 1000; playerDataDictionary.Add("John", tempPlayerDataStruct); tempPlayerDataStruct.nickName = "Fighter"; tempPlayerDataStruct.age = 20; tempPlayerDataStruct.score = 2000; playerDataDictionary.Add("Peter", tempPlayerDataStruct); //---------------------------------------------------------------------------------------------------------------- if (playerDataDictionary.Values.Any(x => x.age >= 20) == true) { Debug.Log("本遊戲有大於20歲以上的玩家。"); } Debug.Log("本遊戲內小於20歲的玩家第一人為:" + playerDataDictionary.Where(x => x.Value.age < 20).Select(x => x.Key).FirstOrDefault()); } void Update () { } }一般比較常見的情況有:
1.使用Value去逆向尋找Key。
2.判斷此Dictionary內是否包含該Key或是該Value。
3.直接尋找或比對Structure內的某一個屬性。
自己所知的對應方式:
依據條件把找到Key的全都取出
playerDataDictionary.Where(x => x.Value.age < 20).Select(x => x.Key)
取出找到的第一個Key
playerDataDictionary.Where(x => x.Value.age > 20).Select(x => x.Key).FirstOrDefault())
playerDataDictionary.FirstOrDefault(x => x.age >= 20).Key
判斷有無該Key包含在內
playerDataDictionary.ContainsKey("Peter")
判斷有無該Value的屬性包含在內
playerDataDictionary.Values.Any(x => x.age >= 20)
沒有留言:
張貼留言