EF 6 - 多对多查询,选择第二个表不包含的项目

时间:2014-03-18 08:21:42

标签: entity-framework linq-to-entities

我真的不知道如何正确描述它,但问题在于:

    [Key]
    public int ImageID { get; set; }
    public virtual List<Gallery> Galleries { get; set; }
    public virtual User CreatedBy { get; set; }

    [Key]
    public int GalleryID { get; set; }
    public string Name { get; set; }
    public virtual List<Image> Images { get; set; }

    images = (from i in _ctx.Images
              from g in i.Galleries
              where i.Galleries.Count() <= 0 || g.GalleryID != 0
              select i).ToList();

我已经尝试了几次迭代,但我无法使其正常工作。

我要做的是选择不在图库中的图片。

图片不在特定的图库中,或者根本不在任何图库中。

1 个答案:

答案 0 :(得分:1)

只需选择没有任何图库的图片(这意味着没有图库有这些图片):

images = _ctx.Images.Where(i => !i.Galleries.Any()).ToList();

在这种情况下,EF将生成NOT EXISTS子查询。