1

我知道我们可以使用该方法在linq 查询Contains中生成子句,如下所示: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

4

1 回答 1

4

听起来您想为每个匹配选择一个单独的对象副本。

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

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

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

于 2013-05-20T02:18:36.203 回答