无法解析 linq 查询中的符号"日期时间计划"



我下面有一个linq查询,找不到' datetimesscheduled '

var yogaSpace = (from u in context.YogaSpaces
            orderby u.Address.LocationPoints.Distance(myLocation)
            where ((u.Address.LocationPoints.Distance(myLocation) <= 8047) && (u.Events.DateTimeScheduled >= classDate)) 
            select u).ToPagedList(page, 10);

datetimesscheduled是红色的,智能感知无法在u.Events中找到任何内容,几乎就像它不存在一样。intellisense不会看到Events中的成员。

这是我的YogaSpace和YogaSpaceEvent对象。我可以编译一切如果我删除子句"&&(u.Events。datetimesscheduled>= classDate)",此外,我的表中有此对象的数据,我将其用于测试!

public class YogaSpace
{
    public int YogaSpaceId { get; set; }
    [Index(IsUnique = false)]
    [Required]
    [MaxLength(128)]
    public string ApplicationUserRefId { get; set; }
    public virtual YogaSpaceOverview Overview { get; set; }
    public virtual YogaSpaceDetails Details { get; set; }
    public virtual ICollection<YogaSpaceImage> Images { get; set; }
    [Required]
    public ListingComplete ImageCompleted { get; set; }
    public byte[] Thumbnail { get; set; }
    public virtual YogaSpaceListing Listing { get; set; }
    public virtual YogaSpaceAddress Address { get; set; }
    public virtual ICollection<YogaSpaceReview> Reviews { get; set; }
    [Required]
    public DateTime DateCreated { get; set; }
    public virtual ICollection<YogaSpaceEvent> Events { get; set; }
    [Required]
    [Index]
    public YogaSpaceStatus Status { get; set; }
    [Required]
    [Range(0, 4)]
    public int StepsToList { get; set; }
    [ForeignKey("ApplicationUserRefId")]
    public virtual ApplicationUser ApplicationUser { get; set; }
}
public class YogaSpaceEvent
{
    public int YogaSpaceEventId { get; set; }
    //public string Title { get; set; }
    [Index]
    //research more about clustered indexes to see if it's really needed here
    //[Index(IsClustered = true, IsUnique = false)] 
    public DateTime DateTimeScheduled { get; set; }
    public int AppointmentLength { get; set; }
    public int StatusEnum { get; set; }
    [Index]
    public int YogaSpaceRefId { get; set; }
    [ForeignKey("YogaSpaceRefId")]
    public virtual YogaSpace YogaSpace { get; set; }
}

属性u.Events是一个事件集合。因此,DateTimeScheduled不能只有一个值,它有多个值。

需要先选择具有DateTimeScheduled >= classDate的事件。像这样:

var yogaSpace = (from u in context.YogaSpaces
        orderby u.Address.LocationPoints.Distance(myLocation)
        where ((u.Address.LocationPoints.Distance(myLocation) <= 8047) 
        && (u.Events.Any(e => e.DateTimeScheduled >= classDate))) 
        select u).ToPagedList(page, 10);

代码u.Events.Any(e => e.DateTimeScheduled >= classDate)的更改部分现在将返回一个布尔值true或false,指示是否有任何事件被安排在类日期上或之后。

相关内容

最新更新