2014-09-30 21 views
1

我有一個數據庫表。我想要的是使用group by子句獲取數據,正如我在下面的代碼中使用的那樣。 請注意,Decision是另一個表格。現在我希望所有與特定會議標題有關的決定都應該以列表的形式顯示出來。例如 meetingtitle1 = decision1,decison2,decison3 meetingtitle2 = decision1,decison2 但在代碼下面只返回一個決策標題。使用linq獲取特定會議標題的列表asp.net

public List<NewMeetings> GetAllMeetings() 
     { 

      var xyz = (from m in DB.MeetingAgenda 
         //join mp in Meeting on m.MeetingId equals mp.MeetingId 
         //where m.MeetingId == 2 
         group m by new { m.Meeting.MeetingTitle } into grp 
         select new NewMeetings 
         { 
          // meetingid = grp.Key.MeetingId, 
          meetingtitle = grp.Key.MeetingTitle, 
          decision = grp.Select(x => x.Decision.DecisionTitle).FirstOrDefault(), 

          total = grp.Count() 
         }).ToList(); 

      List<NewMeetings> list = xyz.ToList(); 
      return list; 



     } 

     public class NewMeetings 
     { 
      public int meetingid; 
      public string meetingtitle; 
      public string decision; 
      public int total; 
     } 

有人可以請告訴我如何將決定列表返回給特定的Meetingtitle嗎?

+0

儘量去除'當您選擇決策時,FirstOrDefault()'。 – Viper 2014-09-30 08:17:15

回答

0

你正在做一個FirstOrDefault的決定名單,這顯然意味着你只能得到一個單一的值。

decision = grp.Select(x => x.Decision.DecisionTitle).FirstOrDefault(), 

要這樣:相反,你可以通過改變這一行加入他們一起到一個較長的字符串(如你在問題中指出用逗號分隔)

decision = string.Join(",", grp.Select(x => x.Decision.DecisionTitle)), 

然而,由於string.Join是不認可的LINQ到實體,你需要做的string.Join數據被檢索後(即在ToList):

var xyz = (from m in DB.MeetingAgenda 
       group m by new { m.Meeting.MeetingTitle } into grp 
       select new 
       { 
        meetingtitle = grp.Key.MeetingTitle, 
        decisions = grp.Select(x => x.Decision.DecisionTitle), 
        total = grp.Count() 
       }) 
       .ToList() 
       .Select(m => new NewMeetings 
       { 
        meetingtitle = m.meetingtitle, 
        decision = string.Join(",", m.decisions), 
        total = m.total 
       }); 
+0

我已經測試過您提供的解決方案,但遇到此錯誤。 LINQ to Entities無法識別方法'System.String加入(System.String,System.Collections.Generic.IEnumerable'1 [System.String])'方法, – saif 2014-09-30 08:37:51

+0

啊,我忘記了這一點。我做了一個改變。 – DavidG 2014-09-30 08:42:25