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

本文关键字:对象 两次 where-in linq 子句 选择 | 更新日期: 2023-09-27 18:14:25

我知道我们可以使用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();

我的问题是,如果IDwhere条件下出现两次,我如何能够两次选择匹配对象?

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

听起来像是要为每个匹配选择对象的单独副本。

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

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