【问题标题】:get list of decision for a specific meetingtitle using linq asp.net使用 linq asp.net 获取特定会议标题的决定列表
【发布时间】:2014-09-30 08:10:12
【问题描述】:

我有一个数据库表。我想要的是使用我在下面的代码中使用的group by 子句获取数据。 请注意,Decision 是另一个表。现在我希望与特定会议标题相关的所有决定都应显示在 list.like meetingtitle1=decision1,decision2,decision3 会议标题2=决定1,决定2 但下面的代码只返回一个decisiontitle。

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;
       }

谁能告诉我如何将决定列表返回到特定的会议标题?

【问题讨论】:

  • 在选择决策时尝试删除FirstOrDefault( )

标签: sql asp.net linq


【解决方案1】:

您在决策列表中执行FirstOrDefault,这显然意味着您只得到一个值。相反,您可以通过更改以下行将它们全部连接成一个更长的字符串(如问题中所示,用逗号分隔):

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

到这里:

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

但是,由于 Linq to Entities 无法识别string.Join,因此您需要在检索到数据后(即在ToList 之后)执行string.Join

   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
              });

【讨论】:

  • 我已经测试了您提供的解决方案,但收到此错误。 LINQ to Entities 无法识别方法 'System.String Join(System.String, System.Collections.Generic.IEnumerable`1[System.String])' 方法,
  • 啊,我忘了。我已经做出了改变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多