2011-02-13 7 views
0

コース料金を払い戻していないすべての学生をリストアップしたいと思います。 、つまり学生がクリックされたときに、すべての未払い料金を月単位で記載します。linq selectへの質問

これは私がこれまで行ってきたことです。
これはすべての学生のアクティブなコースです。

以下は、学生がコースに支払った支払い記録です。 enter image description here
私は保留中のすべての支払いforeach学生 をリストしたいと思います。コースへの最後の支払いは2011年2月11日です。日時は現在、月をされている場合、私は
月額
月100
4月200
月400

これは私が試したものです。..

foreach (var result in activeCourses) 
{ 
    //Show all the pending paid coures from dateJoin till datetime.Now 
    DateTime JoinedDate = Convert.ToDateTime(result.cus.Date); 
    for (DateTime d = JoinedDate; d.Month <= DateTime.Now.Month; d = d.AddMonths(1)) 
    { 
     Payment payment = new Payment(); 

     payment.Course.Id = result.c.Id; 
     payment.Course.Name = result.c.Name; 
     payment.Course.Fee = result.c.Fee; 
     payment.CourseByStudent.CourseUserStatus.Date = result.cu.Date; 
     payment.CourseByTutor.TutorId = result.t.TutorId; 
     payment.User.Name = result.u.Name; 

     payment.MonthId = d.Month; 
     payment.MonthToPay = d.ToString("MMM"); 
     output.Add(payment); 
    } 
} 
として保留中の金額を表示したいと思い


上記の論理は、学生がコースに対して何も支払っていない場合に効率的ではないように見えます。その後、最初のJoinedDate以降の支払いを確認する必要があります。他の方法私は、その特定のコースに応じて支払テーブルのDateIssueから保留中の支払いを確認する必要があります。アドバイスをしていただきありがとうございます。

+0

Guysは、私は(日時dに対して行うことによって、上記の方法をバック使い続けると思います= lastPaidDate.AddMonths(1); d.Month <= DateTime.Now.Month; D = d.AddMonths(1))。とにかくありがとう。 – VeecoTech

答えて

0

私は同じ支払い方法を使用します。

for (DateTime d = lastPaidDate.AddMonths(1); d.Month <= DateTime.Now.Month; d = d.AddMonths(1)) 

おかげ