2013-05-20 37 views
1

我知道,我们可以在LINQ查询这样产生where子句中使用Contains方法:选择匹配对象的LINQ两次,其中,在第

List<long> objectIDs = new List<long>() { 1, 1, 2 }; 
var objects = dbcontext.Where(o => objectIDs.Contains(o.ID)) 
        .Select(o => o).ToList(); 

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

+1

您可以将dbcontext与objectIDs – Polity

回答

3

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

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

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

你也可以做得更快使用一个连接。

相关问题