2012-01-30 98 views
0

我現在有一個LINQ查詢:有毛病我的LINQ to Entities查詢

public List<EventSchool> GetEventSchools(int eventID) 
    { 
     var eventSchools = db.EventSchools 
      .Include("Organisation") 
      .Where(e => e.EventID == eventID) 
      .ToList(); 

     foreach (var ev in eventSchools) 
     { 
      if (db.EventSchoolKeyStages.Where(e => e.EventSchoolID == ev.EventSchoolID).Count() > 0) 
      { 
       int ks = db.EventSchoolKeyStages 
       .Where(e => ev.EventSchoolID == ev.EventSchoolID) 
       .Sum(e => e.Males + e.Females); 

       ev.StudentNumbers = ks; 
      } 
     } 

     return eventSchools; 
    } 

當我檢查EventSchools,列表中的所有項目的學生人數顯示爲第一個總。

舉例來說,如果我有列表中的3項:

Item 1 - Males = 10, Females = 10 
Item 2 - Males = 1, Females = 2 
Item 3 - Males = 200, Females = 500 

所有項目具有20 StudentNumbers,而不是:

Item 1 - 20 
Item 2 - 3 
Item 3 - 700 

不知道我做錯了嗎?

回答

2

您在這裏有一個錯字:

.Where(e => ev.EventSchoolID == ev.EventSchoolID) 

這拉姆達將永遠是正確的。我懷疑你的意思是

.Where(e => e.EventSchoolID == ev.EventSchoolID) 
      ^^^ 

這是在指定的地方不同。

2

您的查詢時出現錯誤:

.Where(e => ev.EventSchoolID == ev.EventSchoolID) 

應該是:

Where(e => e.EventSchoolID == ev.EventSchoolID)