【问题标题】:C# Query Group to List要列出的 C# 查询组
【发布时间】:2014-12-26 15:56:34
【问题描述】:

我已经尝试解决这个问题超过两天了,但我无法让它发挥作用。我有两个实体:Film(电影)和 Voorstelling(筛选)。一个电影有多个 voorstelling,而一个 voorstelling 只有一个电影。

现在我正在尝试选择所有具有未来日期的电影并将其作为列表返回。所以我写了下面的查询,但由于它有一个 Group by,它返回一个 IGrouping,我不知道如何转换为 List。我只想让每部电影都列出一次(现在它会返回多个条目,因为那部电影可能有不止一个 Voorstelling。)

我现在使用的查询是:

var films = from f in dbContext.Films
            join v in dbContext.Voorstellingen on f equals v.Film
            where v.Start >= DateTime.Now
            group f by v.Id into grouping
            select grouping;

这么长的问题简短:我如何确保分组只包含每部电影一次(唯一)。

【问题讨论】:

    标签: c# linq group-by unique


    【解决方案1】:

    使用扩展方法:

    var currentTime = DateTime.Now;
    var films = dbContext.Films.Where(f => f.Voorstellingen.Any(s => s.Start >= currentTime)).ToList();
    

    【讨论】:

    • 只有当电影将 Voorstellingen 作为属性时,此答案才有效。但从原始查询来看,它们似乎是分开的,而不是作为属性连接的。
    • @VaskoPoposki OP 正在使用实体框架(因此使用了dbContext),这将要求他拥有Voorstellingen 属性才能正确地拥有他提到的两个表之间的关系.
    • 非常感谢!这行得通。我确实在使用实体框架,并且电影将 Voorstellingen 作为属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多