2011-10-11 11 views
3

複数の請求書を生成するメソッドを作成しようとしています。これは、クライアントがEnrollmentsというクラスのチューターに登録されている大学のためのものです。この方法では、チューターが彼らが与えたレッスンについて特定の手数料を得るので、私はチューターの顧客の毎月の手数料にその手数料のパーセンテージを掛けて積み重ねようとしています。ここでは、このための私のコードは次のとおりです。ToListメソッドラインでメソッドグループ 'ToList'を代理人以外のタイプに変換できません

public ActionResult CreateBulkCommissions() 
    { 
     var month = DateTime.Now.ToString("MMMM"); 

     var enrolments = db.Enrollments.ToList(); 

     var newCommissions = from enrolment in enrolments 
          select new TutorCommission() 
          { 
           CommissionAmount = enrolment.MonthlyFee, 
           CommissionMonth = month, // string constant 
           CommissionStatus = "Unpaid", 
           Tutor = new Tutor { TutorNoID = enrolment.Tutor.TutorNoID, TutorCommissionPercentage = enrolment.Tutor.TutorCommissionPercentage } 
          }; 
     foreach (var newCommission in newCommissions) 
     { 
      List<TutorCommission> TutorComs = newCommissions.GroupBy(g => g.Tutor).Select(s => new TutorCommission 
      { 
       CommissionAmount = s.Sum(u => u.CommissionAmount) * s.Key.TutorCommissionPercentage, 
       TutorNoID = s.Key.TutorNoID 

      }).ToList; 

      db.TutorCommission.Add(newCommission); 
      db.SaveChanges(); 
     } 

     return RedirectToAction("Index"); 
    } 

、私はそれがメソッドグループToListメソッドが非デリゲート型に変換する変換することをエラーメッセージが表示さです。ここに私の関連するモデルクラスは次のとおりです。

public class Enrollment 
{ 
    [Key] 
    [Display(Name = "Enrollment ID Number")] 
    public long EnrollmentIDNumber { get; set; } 
    [Display(Name = "Client ID Number")] 
    public long ClientNumberID { get; set; } 
    [Display(Name = "Tutor ID Number")] 
    public long TutorNoID { get; set; } 
    [Display(Name = "Course Name")] 
    public string CourseName { get; set; } 
    [Display(Name = "Lesson Time")] 
    public string LessonTime { get; set; } 
    [Display(Name = "Lesson Day")] 
    public string LessonDay { get; set; } 
    [Display(Name = "Lesson Location")] 
    public string LessonLocation { get; set; } 
    [Display(Name = "Lesson Type")] 
    public string LessonType { get; set; } 
    [Display(Name = "Lesson Level")] 
    public string LessonLevel { get; set; } 
    [Display(Name = "Monthly Fee")] 
    public long MonthlyFee { get; set; } 

    public virtual Client Client { get; set; } 
    public virtual Tutor Tutor { get; set; } 

} 

public class TutorCommission 
{ 
    [Key] 
    [Display(Name = "Commission ID")] 
    public long CommissionID { get; set; } 
    [Display(Name = "Commission Month")] 
    public string CommissionMonth {get; set;} 
    [Display(Name = "Commission Amount")] 
    public double CommissionAmount { get; set; } 
    [Display(Name = "Commission Status")] 
    public string CommissionStatus { get; set; } 
    [Display(Name = "Tutor ID Number")] 
    public long TutorNoID { get; set; } 

    public virtual Tutor Tutor { get; set; } 
    public virtual ICollection<CommissionPayments> CommissionPayments { get; set; } 

} 

public class Tutor 
{ 
    [Key] 
    [Display(Name = "Tutor ID Number")] 
    public long TutorNoID { get; set; } 
    [Required] 
    [StringLength(50, ErrorMessage="First name must be less than 50 characters")] 
    [Display(Name = "First Name")] 
    public string TutorFirstName { get; set; } 
    [StringLength(50, ErrorMessage = "Last name must be less than 50 characters")] 
    [Display(Name = "Last Name")] 
    public string TutorLastName { get; set; } 
    [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)] 
    [Display(Name = "Birth Date")] 
    public DateTime? TutorBirthDate { get; set; } 
    [Display(Name = "Cellphone Number")] 
    public string TutorCellphoneNumber { get; set; } 
    [Display(Name = "Home Number")] 
    public string TutorHomeNumber { get; set; } 
    [RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$", ErrorMessage = "Not a valid email address")] 
    [Display(Name = "Email Address")] 
    public string TutorEmailAddress { get; set; } 
    [Display(Name = "Street Address")] 
    public string TutorStreetAddress { get; set; } 
    [Display(Name = "Suburb")] 
    public string TutorSuburb { get; set; } 
    [Display(Name = "City")] 
    public string TutorCity { get; set; } 
    [Display(Name = "Postal Code")] 
    public string TutorPostalCode { get; set; } 
    [Display(Name="Full Name")] 
    public string FullName 
    { 
     get 
     { 
      return TutorFirstName + " " + TutorLastName; 
     } 
    } 
    [Display(Name="Commission Percentage")] 
    [Required] 
    public double TutorCommissionPercentage { get; set; } 

    public virtual ICollection<Enrollment> Enrollments { get; set; } 
    public virtual ICollection<TutorCommission> TutorCommissions { get; set; } 

} 

おかげで、 エイミー

答えて

18

あなたはToListメソッド()ないToListメソッドを呼び出す必要があります。

+0

Ah!いつも何かとてもシンプルな、ありがとう。私は今、新しいエラーを取得していますが、検証は1つまたは複数のエンティティで失敗しました。詳細は、「EntityValidationErrors」プロパティを参照してください。 EntityValidationErrorsはどこにありますか? – Amy

+0

EntityValidationErrorsは例外です。ここで自分のソースをダウンロードし、それらの処理方法を調べてください。 http://completedevelopment.blogspot.com/2011/10/codecamp-nyc-entity-framework-mvc-code.html –

+0

ありがとうございます。そのような例外に関する一般的な問題は何ですか? – Amy

1

はもしかして:

List<TutorCommission> TutorComs = newCommissions.GroupBy(g => g.Tutor).Select(s => new TutorCommission() 
    { 
     CommissionAmount = s.Sum(u => u.CommissionAmount) * s.Key.TutorCommissionPercentage, 
     TutorNoID = s.Key.TutorNoID 

    }).ToList(); 
+0

TutorCommissionコンストラクタのあとにも()があることに注意してください。 –

+1

TutorCommissionコンストラクタの後には、()は必要ありません。 –

+0

本当にね?私はいつもそれを入れて、私が推測する毎日何か新しいことを学びます。 –

2

ToListメソッドは、メソッドではないプロパティです。 ToList()にする必要があります

-1
protected void Button3_Click(object sender, EventArgs e) 
    { 
     SqlDataReader dr = null; 
     SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=shoping;User ID=sa;Password=yamini"); 
     con.Open(); 
     SqlCommand cmd = new SqlCommand("Select email from usertd where @email='" + TextBox1.Text + "' ", con); 
     cmd.Parameters.AddWithValue("@email", TextBox1.Text); 
     dr = cmd.ExecuteReader; 
     if (dr != null && dr.HasRows) 
     { 
      TextBox2.Text = "abc"; 
     } 
     else 
     { 
      TextBox2.Text = "hdc"; 
     } 

    } 
関連する問題