我知道我们可以使用Contains
方法在linq查询中生成where
子句,如下所示:
List<long> objectIDs = new List<long>() { 1, 1, 2 };
var objects = dbcontext.Where(o => objectIDs.Contains(o.ID))
.Select(o => o).ToList();
我的问题是,如果在ID
条件下where
出现两次,我将如何选择匹配对象两次?
答案 0 :(得分:3)
听起来你想为每场比赛选择一个单独的对象副本。
Select()
只能返回一个对象;你需要SelectMany()
:
list.SelectMany(p => Enumerable.Repeat(p, objectIDs.Count(id => id == p.ID)))
您也可以使用联接更快地完成此操作。