【发布时间】:2020-01-09 00:29:49
【问题描述】:
我需要获取包含歌曲列表的 Decades 列表。
关键是我需要一个 ACTIVE Decades 列表以及 ACTIVE 歌曲。
这是我的模型:
这是我目前所拥有的:
Decades = await _context.Decades
.Include(x => x.Songs)
.Where(x => x.Active == true && x.Songs.Any(s => s.Active == true))
.OrderBy(x => x.DecadeId)
.ToListAsync()
但我得到的是处于活动状态的 Decades,但歌曲无关紧要 - 无论 ACTIVE 标志如何,我都会得到它们。
想法?
这是我想出的解决方案 - 在 Jawad 的帮助下 - 对于那些可能觉得有用的人:
Decades = await _context.Decades
.Include(x => x.Songs)
.Where(x => x.Active == true)
.OrderBy(x => x.DecadeId)
.Select(x => new Decade()
{
DecadeId = x.DecadeId,
DecadeText = x.DecadeText,
DecadeExtended = x.DecadeExtended,
Description = x.Description,
Active = x.Active,
Added = x.Added,
Songs = x.Songs
.Where(s => s.Active == true).ToList()
}).ToListAsync()
【问题讨论】:
-
在 EF 中没有任何规定可以在单个查询中过滤包含的内容。见this answer。