我是比较新的波长/ LINQ的,但是,我想要从一个特定的日历,其中的事件仍然在未来所有的事件......筛选数据
如果我使用:
EventCalendar eventCalendar;
eventCalendar = db.Events_Calendars.Find(id);
我可以通过查看当前的日期获取所有事件和过滤器,但我不认为这是最好的方法。
的模型如下:
[Table("Events_Calendars")]
public class EventCalendar
{
public int Id { get; set; }
public string Calendar { get; set; }
public virtual List<Event> Events { get; set; }
}
事件模型:
public class Event
{
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public DateTime Start { get; set; }
public DateTime End { get; set; }
public int? Capacity { get; set; }
.
.
.
}
一个在这个问题上我的失败尝试的是:
eventCalendar = db.Events_Calendars.Where(x => x.Events.Any(y => y.End >= DateTime.Today));
但它给我“不能隐式转换类型'System.Linq.IQueryable < ... Models.EventCalendar>'到'... Models.EventCalend ar'
编辑:添加声明行... EventCalendar eventCalendar;
您的解释和示例让我更好地理解了该问题(感谢额外阅读), 我仍然需要通过特定的日历来限制它,并且只列出未来事件。我很难理解如何过滤虚拟事件,因为它本质上是从第二个表中提取数据。 – thefid
更新:我通过将“&& x.Id == id”添加到where子句来解决单个日历问题,但未来日期的筛选器仍然无效。 – thefid
@thefid将有关新错误或异常的信息放入当前问题中(如果有)。你确定'db.Events_Calendars'不是空的,你需要比较'y.End> = DateTime.Today',而是'y。开始> = DateTime.Today'? –