获取最新项目和最近项目之前的项目

时间:2010-03-04 16:14:20

标签: linq linq-to-entities

我有一张包含许多纪念日的表格:日期+姓名。

我想要显示下一个周年纪念日,以及之后的Linq。

我如何构建查询? 我用EF 谢谢 约翰

3 个答案:

答案 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)