我有一张包含许多纪念日的表格:日期+姓名。
我想要显示下一个周年纪念日,以及之后的Linq。
我如何构建查询? 我用EF 谢谢 约翰
答案 0 :(得分:1)
按日期排序,然后使用.Take(n)
功能
答案 1 :(得分:1)
一些对象列表的示例,假设您想按日期排序,然后命名:
List<Anniversaries> annivDates = GetAnnivDates();
List<Anniversaries> recentAnniv = annivDates.OrderBy(d => d.Date).ThenBy(d => d.Name).Take(2).ToList();
答案 2 :(得分:0)
如果纪念日存储在常规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)