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