2013-05-20 4 views
1

Я знаю, что мы можем использовать метод Contains в генерировании пункта where в Linq запрос, как это:выбрать подходящий объект дважды в LINQ, где в пункте

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

Вы можете присоединиться к dbcontext с объектными идентификаторами – Polity

ответ

3

Похоже, вы хотите выбрать отдельную копию объекта для каждого матча.

Select() может возвращать только один объект; вам нужно SelectMany():

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

Вы также могли бы сделать это быстрее использовать соединение.

Смежные вопросы