2013-11-28 20 views
0

我有會議和城市表,並將它們與lambda表達式結合在一起。另一方面,我根據會議日期設置了一個屬性「過期」,如下所示。而不是以下過期財產,我想要使用Total財產,以便檢查每個申請人的會議總數與同一個MeetingID。在此幫助下,我可以確定會議表中是否有同一個會議(由同一個會議ID)中的50個人,並阻止用戶申請超過50人。通過在Lambda中的ID計數表達式

在我的代碼中,我使用根據MeetingDate屬性設置的Expired參數。我需要分配像「Full」這樣的財產,以便通過id獲得每個會議的總申請人。我如何在下面的Lambda表達式中做到這一點?


市型號:

public class City 
{ 
    public int CityID { get; set; } 
    public string CityName { get; set; } 
}  


會議模式:

public class Meeting 
{ 
    public int MeetingID { get; set; } 
    public string MeetingName { get; set; } 
    public DateTime MeetingStartDate { get; set; }  
    public DateTime? MeetingEndDate { get; set; } 
    public int? TotalParticipant { get; set; } 
    public int? MeetingCityId { get; set; } 
} 


申請人國防部EL:

public class Applicant 
{ 
    [Key] 
    public int ApplicantID { get; set; } 
    public DateTime? SubmitDate { get; set; } 
    public string Name { get; set; } 
    public string Surname { get; set; } 
    public int MeetingId { get; set; } 
} 


控制器:

var meetingsQuery = repository.Meetings 
      .Join(repository.Cities, m => m.MeetingCityId, c => c.CityID, 
       (m, c) => new 
       { 
        CityID = c.CityID, 
        CityName = c.CityName, 
        MeetingDate = m.MeetingStartDate 
       } 
      ) 
      .OrderBy(x => x.CityID) 
      .AsEnumerable() 
      .Select(
       i => new 
       { 
        Value = i.CityID.ToString(), 
        DisplayValue = string.Format(
         "{0} ({1:dd MMMM yyyy})", 
         i.CityName, i.MeetingDate), 
        Expired = i.MeetingDate < DateTime.UtcNow, 
        Full = ... ??? 
       } 
      ).ToList(); 
+0

讓我猜是什麼*總*申請人手段.. –

+0

它不是很清楚你想要什麼'全部'..你是什麼意思「每次會議的總申請人」? – Chris

+0

我解釋了第一段的細節。提前致謝。 –

回答

1

如果您的會議與申請人的關係,則:

 var meetingsQuery = repository.Meetings 
     .Join(repository.Cities, m => m.MeetingCityId, c => c.CityID, 
      (m, c) => new 
      { 
       CityID = c.CityID, 
       CityName = c.CityName, 
       MeetingDate = m.MeetingStartDate, 
       ApplicantsCount = m.Applicants.Count(), 

      } 
     ) 
     .OrderBy(x => x.CityID) 
     .AsEnumerable() 
     .Select(
      i => new 
      { 
       Value = i.CityID.ToString(), 
       DisplayValue = string.Format(
        "{0} ({1:dd MMMM yyyy})", 
        i.CityName, i.MeetingDate), 
       Expired = i.MeetingDate < DateTime.UtcNow, 
       Full = i.ApplicantsCount >= MaxApplicantsCount 
      } 
     ).ToList(); 
+0

感謝您的回覆。但對於ApplicantsCount = m.Applicants.Count()行,「申請人」和「MeetingId」都沒有Count方法。任何想法糾正它? –

+0

我不知道你的模型更有幫助 – maxlego

+0

我增加了模型。 –