在linq where-in子句中选择匹配对象两次

时间:2013-05-20 02:15:09

标签: c# linq entity-framework

我知道我们可以使用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出现两次,我将如何选择匹配对象两次?

1 个答案:

答案 0 :(得分:3)

听起来你想为每场比赛选择一个单独的对象副本。

Select()只能返回一个对象;你需要SelectMany()

list.SelectMany(p => Enumerable.Repeat(p, objectIDs.Count(id => id == p.ID)))

您也可以使用联接更快地完成此操作。