C# 按日期分组并选择语句

C# 按日期分组并选择语句,c#,linq,date,group-by,linq-to-entities,C#,Linq,Date,Group By,Linq To Entities,我只想从我的评论表中选择所有项目,并按日期分组。我最后的select语句正在中断,因为“当前上下文中不存在审阅”。我做错了什么 var byDate = from review in myEntities.Reviews let date = review.CreateDateTime group review by EntityFunctions.TruncateTime(date) into g orderby g

我只想从我的评论表中选择所有项目,并按日期分组。我最后的select语句正在中断,因为“当前上下文中不存在审阅”。我做错了什么

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

在查询结束时,您有组,而不是单个值。因此您不能执行此操作
review.Id
,而且review不再存在,您需要使用
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
,我建议您阅读文档并查看示例:

以下是我在代码隐藏文件中完成的操作:

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>

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