2014-04-12 322 views
0

我想要做的就是从我的评论表中选择所有项目并按日期分组。我的选择陈述在最后被打破了,因为'在当前情境中不存在评论'。我究竟做错了什么?按日期和选择语句分组

var byDate = from review in myEntities.Reviews 
      let date = review.CreateDateTime 
      group review by EntityFunctions.TruncateTime(date) into g 
      orderby g.Key 
      select new { review.Id, review.CreateDateTime, review.Summary, review.Body }; 
repeater1.DataSource = byDate; 
repeater1.DataBind(); 

回答

0

这里是我结束了我的代码做隐藏文件:

var byDate = (from review in myEntities.Reviews 
       group review by review.CreateDateTime into dateGroup 
       select new 
       { 
       dateGroup.Key, 
       Reviews = from review in myEntities.Reviews 
          where review.CreateDateTime.Day == dateGroup.Key.Day && 
          review.CreateDateTime.Month == dateGroup.Key.Month && 
          review.CreateDateTime.Year == dateGroup.Key.Year 
          select new { review.CreateDateTime, review.Title } 
       }); 

Repeater1.DataSource = byDate; 
Repeater1.DataBind(); 

然后我的aspx页面上:

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <asp:Literal ID="Literal1" runat="server" Text='<%# Eval("Key", "{0:MM/dd/yy}") %>' /> 
     <asp:BulletedList ID="ReviewList" runat="server" DataSource='<%# Eval("Reviews") %>' /> 
    </ItemTemplate> 
</asp:Repeater> 
0

在查询结束后,你有,而不是单一values.So你不能做到这一点review.Id,除了审查不存在了,你需要使用g因为你组他们到g

from review in myEntities.Reviews 
let date = review.CreateDateTime 
group review by EntityFunctions.TruncateTime(date) into g 
orderby g.Key 
select new { Date = g.Key, Rewiews = g.ToList() }; 

如果这是您使用groupby第一次,我建议你阅读文档,看看例子:Group Elements in a Sequence

+0

也许我应该INC这个查询后面的两行代码(见编辑的原始问题)。数据绑定不喜欢修改后的查询中的ToList。 – user2665267