2011-10-11 2 views
3

여러 송장을 생성하는 메서드를 작성하려고합니다. 이것은 대학 진학을 목적으로하며, 등록 된 클래스의 교사와 함께 등록합니다. 이 방법을 사용하면 튜터가 자신이 제공하는 수업에 대해 일정한 수수료를받는 것처럼 교사 수수료 고객의 월간 사용료를 누적하려고합니다. 나는 그것이 아닌 대리자 형식에 방법 그룹 ToList 변환 변환하는 것이 오류가 나타납니다 오전의 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"); 
    } 

: 여기이 내 코드입니다. 여기 내 관련 모델 클래스는 다음과 같습니다

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! 항상 그렇게 간단한 것, 감사합니다. 하나 이상의 엔티티에 대해 유효성 검사가 실패했지만 이제는 새로운 오류가 발생합니다. 자세한 내용은 '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"; 
     } 

    } 
관련 문제