【发布时间】:2017-06-15 11:19:12
【问题描述】:
我正在尝试获取满足List<int> 中包含的所有genreIds 的gameIds 列表。
表格(部分):
编辑列表:
- game_id
- 内容
game_genres(游戏可以属于多种类型):
- 身份证
- game_id
- genre_id
我需要获取 game_genres 表中所有 genre_id 的游戏 ID 列表。
例如:
genre_id 的列表包括类型 2 和 3。
如果game_genres 表中存在genre_id = 2 和genre_id = 3 的Game Id = 14。那么它将包含在最终结果中。
这是我的代码:
// get the list of game_id's that have an editorial
var editorialList = (from ee in db.editorials where ee.is_enabled == true select new {
game_id = ee.game_id
}).ToList();
// Produce a list of the games in the editorials and their genre Ids that the belong to
var gameAndGenres = (from el in editorialList join gg in db.game_genres
on el.game_id equals gg.game_id
select new {
game_id = el.game_id,
genre_id = gg.genre_id
}
);
var res = gameAndGenres.Where(
x => x.genres.Contains(x.genre_id)) == genres.Count; // stuck here
最终结果应该是一个唯一的 game_id 列表,列表中的每个游戏属于在流派List<int> 中列出的所有流派。
我创建了几个步骤来帮助我理解查询,但它可能能够在一行中解决,我只是无法解决它。
更新:这是我正在尝试的新代码。
var res = gameAndGenres.GroupBy(x => x.game_id)
.Select(g => new {
game_id = g.Key,
genreIds = g.Select( c => c.genre_id)
});
var res2 = res.Where(x => genres.Intersect(x.genreIds).Count()
== genres.Count()).ToList();
【问题讨论】:
标签: c# sql asp.net entity-framework linq