2
全部,EF Linq group by ICollection of objects
我有一个Linq查询,它提取了一个很好的事件列表。我面临的问题是,事件包含一个集合艺术家调用头条新闻,并在列表中我只想要1件事件,每套,艺术家(S)。
查询下工作正常,但:我需要的活动但只有一个事件左右,排序与人气最高的艺术家的普及设定的,艺术家(S)前10名可以使用 - 不是我想要的。
Context.Events
.Where(x => x.Stage.Venue.AreaId == 1 && x.StartDateTimeUtc > DateTime.UtcNow && x.IsVerified)
.OrderByDescending(x => x.Headliners.Max(y => y.Popularity))
.Take(10)
.ToList();
如何调整上面查询我只得到每艺术家一个事件。我需要做一些分组来查看事件是否由相同(一组)艺术家执行。
我正在研究使用艺术家的主键,但因为它是一个集合,我无法让它工作。我已经尝试了String.Join来为头条新闻获取一个唯一的关键字。但是,这在实体框架中不受支持。
这是可以(优雅地)由Linq支持EF的东西吗?
下面的SQL查询做几乎是我想期望它不会与多个艺术家合作为同一事件
SELECT MAX(E.EventId), MAX(E.Name)
FROM [dbo].[Events] E
INNER JOIN [dbo].[Stages] S ON E.StageId = S.StageId
INNER JOIN [dbo].[Venues] V ON S.VenueId = V.VenueId
INNER JOIN [dbo].[Areas] A ON V.AreaId = A.AreaId
INNER JOIN [dbo].[Headliners] H ON E.EventId = H.EventId
INNER JOIN [dbo].[Artists] A2 ON A2.ArtistId = H.ArtistId
WHERE E.IsVerified = 1 AND E.StartDateTimeUtc>GETDATE() AND A.AreaId = 1
GROUP BY A2.ArtistId, A2.Name, A2.EchoNestHotttnesss
ORDER BY A2.EchoNestHotttnesss desc
你可以提供你的模型,你究竟在问什么。如果你提供预期的输出效果会很好 – Eldho