ãC#ãLINQãSum, Average, Min, Maxãªã©è¨ç®ç³»è§£èª¬ãLINQã
ä»åãLINQã®è¨äºã§ãï¼
LINQ便å©ããï¼
LINQãSum, Average, Min, Maxãªã©è¨ç®ç³»è§£èª¬
ããã°ã©ãã³ã°ã®åå¼·ã«ãããããã¡ãªãå¦æ ¡ã®ãã¹ãã®ç¹æ°ã§å®é¨ãã¦ã¿ã¾ãï¼
以ä¸ã½ã¼ã¹ã§ãï¼
using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; public class LinqTest : MonoBehaviour { List<Student> humans = new List<Student>(); int id = 0; void Start () { MakeStudent("ããã", true, 90, 80); MakeStudent("ããã", true, 70, 70); MakeStudent("ã¯ãªã", false, 100, 100); MakeStudent("ãã¨ã", false, 50, 30); humans.ForEach(h => Debug.Log("ID:"+h.id+", åå:"+h.name+", æ§å¥:"+h.gender.ToString()+", è±èªç¹æ°:"+h.englishScore+", æ°å¦ç¹æ°:"+h.mathScore)); } void MakeStudent(string name, bool isMan, int englishScore, int mathScore) { humans.Add(new Student(id++, name, isMan, englishScore, mathScore)); } } public class Student { public int id; public string name; public enum Gender { Male, Female } public Gender gender; public int englishScore; public int mathScore; // ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ID, åå, æ§å¥, è±èªã®ç¹æ°, æ°å¦ã®ç¹æ°ãè¨å® public Student(int id, string name, bool isMan, int englishScore, int mathScore) { this.id = id; this.name = name; if(isMan) { this.gender = Gender.Male; } else { this.gender = Gender.Female; } this.englishScore = englishScore; this.mathScore = mathScore; } }
LinqTest.cs
MakeStudentã¡ã½ããã«åå, æ§å¥, è±èªã¨æ°å¦ã®ç¹æ°ã渡ãã¦Studentã¤ã³ã¹ã¿ã³ã¹ãnewãã¦ãã¾ãï¼
Unityããã£ã¦ããã¨ãMonoBehaviourãç¶æ¿ãã¦ããªãã¯ã©ã¹ãnewãã¦ä½¿ãã®ãæ°é®®ã§ããï¼
ã¨ãããããããããããããããã¯ãªããããã¨ããã®Studentãå®æãã¾ããï¼
LINQ Sumé¢æ°
Sumé¢æ°ã使ãã°ãé
åã®æ°å¤ãåè¨ããå¤ãåºããã¨ãã§ãã¾ãï¼
å
ã»ã©ã®ã½ã¼ã¹ã®Startã¡ã½ããã§èª¬æãã¦ããã¾ãã
void Start () { MakeStudent("ããã", true, 90, 80); MakeStudent("ããã", true, 70, 70); MakeStudent("ã¯ãªã", false, 100, 100); MakeStudent("ãã¨ã", false, 50, 30); // Sumé¢æ°ãã¹ã Debug.Log("è±èªåè¨ç¹(ç·)" + humans.Where(h => h.gender == Student.Gender.Male).Sum(h => h.englishScore)); Debug.Log("è±èªåè¨ç¹(女)" + humans.Where(h => h.gender == Student.Gender.Female).Sum(h => h.englishScore)); }
Whereé¢æ°ã使ãæ§å¥ã§ãã£ã«ã¿ã¼ããããå¾ãSumé¢æ°ã§åè¨ãã¦ãã¾ãï¼
Sumé¢æ°ã®å¼æ°ã«ã¯ãã©ã ãå¼ãè¨è¿°ãããã¨ãã§ãã¾ãï¼å
容ã¨ãã¦ã¯Selecté¢æ°ã¨åãã§ãenglishScoreãæãåºãã¦ãã¾ãï¼
LINQã®Selecté¢æ°ãWhereé¢æ°ã«ã¤ãã¦ã¯ãã¡ããåç
§ãã¦ãã ããï¼
hiyotama.hatenablog.com
ç·æ§ã¨å¥³æ§ã®è±èªã®ç¹æ°ã®åè¨ããç¡äºåºã¾ããï¼
LINQ Averageé¢æ°
ç¶ãã¦Averageé¢æ°ã§ãï¼é åã®æ°å¤ã®å¹³åãåºãã¾ãï¼
void Start () { MakeStudent("ããã", true, 90, 80); MakeStudent("ããã", true, 70, 70); MakeStudent("ã¯ãªã", false, 100, 100); MakeStudent("ãã¨ã", false, 50, 30); // Averageé¢æ°ãã¹ã Debug.Log("è±èªå¹³åç¹(ç·):" + humans.Where(h => h.gender == Student.Gender.Male).Average(h => h.englishScore)); Debug.Log("è±èªå¹³åç¹(女):" + humans.Where(h => h.gender == Student.Gender.Female).Average(h => h.englishScore)); }
Whereé¢æ°ã使ãæ§å¥ã§ãã£ã«ã¿ã¼ããããAverageé¢æ°ã§englishScoreã®å¹³åãåºãã¦ãã¾ãï¼
LINQ Miné¢æ° Maxé¢æ°
æå¾ã¯Miné¢æ°ã¨Maxé¢æ°ã§ãï¼
é
åã®æ°å¤ã®æä½å¤ã¨æé«å¤ãåºãã¾ãï¼
void Start () { MakeStudent("ããã", true, 90, 80); MakeStudent("ããã", true, 70, 70); MakeStudent("ã¯ãªã", false, 100, 100); MakeStudent("ãã¨ã", false, 50, 30); // Miné¢æ°ãã¹ã Debug.Log("æ°å¦æä½ç¹(ç·)" + humans.Where(h => h.gender == Student.Gender.Male).Min(h => h.mathScore)); Debug.Log("æ°å¦æä½ç¹(女)" + humans.Where(h => h.gender == Student.Gender.Female).Min(h => h.mathScore)); // Maxé¢æ°ãã¹ã Debug.Log("æ°å¦æé«ç¹(ç·)" + humans.Where(h => h.gender == Student.Gender.Male).Max(h => h.mathScore)); Debug.Log("æ°å¦æé«ç¹(女)" + humans.Where(h => h.gender == Student.Gender.Female).Max(h => h.mathScore)); }
ä¾ã®ãã¨ãWhereé¢æ°ã§æ§å¥ã§ãã£ã«ã¿ã¼ããããMin/Maxé¢æ°ã§çµæã®æ°å¤ãé ãã¦ã¾ãï¼
ä»ã¾ã§é
åãèªãæã¯foræãforeachæããã®å ´éãã®ãã©ã°å¤æ°ãä½ã£ã¦ãã¾ãããã
LINQã使ãã°ã ããã1ã2è¡ã§çµæãå¾ããã¨ãã§ãã¾ãï¼
ããªããªä½¿ã£ã¦ãããã¨æãã¾ããï¼