簡體   English   中英

LINQ:分組並加入

[英]LINQ: Group by and Join

我有2個型號:

public partial class Movie
{
    public Movie()
    {
        TimeTables = new HashSet<TimeTable>();
    }

    [Key]
    public int MovieId { get; set; }
    public string MovieName { get; set; }
    public int MovieGenre { get; set; }
    public string MoviePicture { get; set; }
    public string MovieDescription { get; set; }
    public string MovieShortText { get; set; }
    public bool? MovieIs3d { get; set; }
    public bool? MovieIsImax { get; set; }
    public int MovieLanguage { get; set; }
    public bool? MovieSubtitled { get; set; }
    public int? MovieMinimalAge { get; set; }
    public bool? MovieHasDrugs { get; set; }
    public bool? MovieHasViolence { get; set; }
    public bool? MovieHasSex { get; set; }
    public bool? MovieHasSwearing { get; set; }
    public bool? MovieIsScary { get; set; }
    public bool? MovieHasDiscrimination { get; set; }
    public string MovieTrailer { get; set; }
    public int MovieLength { get; set; }
    public int? Genre_GenreId { get; set; }
    public int? Language_LanguageId { get; set; }
    public virtual Genre Genre { get; set; }
    public virtual Language Language { get; set; }
    public virtual ICollection<TimeTable> TimeTables { get; set; }
}

和:

public partial class TimeTable
{
    public TimeTable()
    {
        Reservations = new HashSet<Reservation>();
    }
    public int TimeTableId { get; set; }
    public int MovieId { get; set; }
    public int RoomId { get; set; }
    public int SeatsAvaible { get; set; }
    public DateTime StartTime { get; set; }
    public DateTime EndTime { get; set; }
    public virtual Movie Movie { get; set; }
    public virtual ICollection<Reservation> Reservations { get; set; }
    public virtual Room Room { get; set; }
}

我想顯示電影中的所有記錄,這些記錄在時間表中具有一個或多個記錄,並且其中StartDate.date == [給定的日期時間]。 通過一個簡單的查詢,電影就會放映多次。 我已經嘗試了一個distinct(),但是沒有任何改變。 這里有人解決方案嗎?

當前查詢:

var times2 =
            (from s in timetablerepo.TimeTables
             orderby s.StartTime.TimeOfDay
             where s.StartTime.Date == datetime.Date
             select s).Distinct().ToList();

為什么不先從電影開始,然后按時間表過濾:

var times = timetablerepo.Movies
            .Where(m => m.TimeTables.Any(t => t.StartDate.Date == <yourdate>));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM