我有一个包含许多周年纪念的表:日期+姓名。
我想和Linq一起展示下一个周年纪念和下一个周年纪念。
如何构建查询?我用EF谢谢约翰
发布于 2010-03-05 00:17:06
只需按日期排序,然后使用.Take(n)功能
发布于 2010-03-05 00:23:25
示例中包含一些对象列表,假设您希望按日期排序,然后按名称排序:
List<Anniversaries> annivDates = GetAnnivDates();
List<Anniversaries> recentAnniv = annivDates.OrderBy(d => d.Date).ThenBy(d => d.Name).Take(2).ToList();发布于 2010-03-05 01:13:01
如果周年纪念存储在常规的DateTime结构中,它们可能设置了“错误”的年份(即结婚或出生年份)。我建议编写一个函数来计算周年纪念日的下一个日期(基于当天),如下所示:
static DateTime CalcNext(DateTime anniversary) {
DateTime newDate = new DateTime(DateTime.Now.Year, anniversary.Month, anniversary.Day);
if (newDate < DateTime.Now.Date)
newDate = newDate.AddYear(1);
return newDate;
}然后,继续对日期进行排序,并获取前两个值,如其他帖子中所述:
(from e in anniversaries orderby CalcNext(e.Date) select e).Take(2)https://stackoverflow.com/questions/2380794
复制相似问题