2014-09-30 23 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