1
スチューデントクラスのプロパティグレード/ GradeLinqは、ポイントとスコアリングリストによって駆動されます。ベストプラクティスLinq駆動プロパティ
グレードを計算する2つの異なる方法が見つかりました。グレードとGradeLinqとして以下に示す
良いクラスデザインのより良いプラクティスは何ですか?不利点やより良い解決策を提供する。
採点クラス
public class Scoring
{
public int minScale { get; set; }
public int maxScale { get; set; }
public string Grade { get; set; }
}
public class Student
{
public int StudentID { get; set; }
public string StudentName { get; set; }
public int StandardID { get; set; }
public int Points { get; set; }
public string Grade { get; set; }
public static List<Scoring> sc { get; set; }
public string GradeLinq
{
get
{
return sc?.Find(w => w.minScale < Points && w.maxScale > Points).Grade;
}
}
}
var scoringList = new List<Scoring>
{
new Scoring { maxScale=100, minScale=85, Grade ="A" },
new Scoring { maxScale=84, minScale=70, Grade ="B" },
new Scoring { maxScale=69, minScale=50, Grade ="C" },
new Scoring { maxScale=49, minScale=40, Grade ="D" },
new Scoring { maxScale=39, minScale=25, Grade ="E" },
new Scoring { maxScale=24, minScale=0, Grade ="F" },
};
var studentList = new List<Student>()
{
new Student() { StudentID = 1, StudentName = "John", StandardID =1, Points = 88 },
new Student() { StudentID = 2, StudentName = "Moin", StandardID =1, Points = 60 },
new Student() { StudentID = 3, StudentName = "Bill", StandardID =2, Points = 61 },
new Student() { StudentID = 4, StudentName = "Ram", StandardID =2, Points = 99 },
new Student() { StudentID = 5, StudentName = "Ron", Points = 10 }
};
void Main()
{
Student.sc = scoringList;
studentList.ForEach(f => f.Grade = scoringList.Find(w => w.minScale < f.Points && w.maxScale > f.Points).Grade);
}
btw .Findと.ForEachはListメソッドです。私はLINQメソッドが表示されません – Slai