2017-05-28 9 views
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); 
} 
+1

btw .Findと.ForEachはListメソッドです。私はLINQメソッドが表示されません – Slai

答えて

1

グレードは厳密ロジックは、学生のクラス内に配置されなければならない学生のエンティティに関連するプロパティですので。あなたの例では、gradelinqプロパティ内の学生エンティティを設計すると、読みやすく、マントンのコードが作成されます。 グレードプロパティを使用する必要がある場合、データ操作操作内でビジネスコアロジックを汚染しないようにします。

関連する問題