2010-05-18 3 views
0

я пытаюсь сделать что-то вроде этого запроса:Смешивание LINQ к SQL со свойствами объектов в общий список

var query = from a in DatabaseTable 
      where listOfObjects.Any(x => x.Id == a.Id) 
      select a; 

В принципе, я хочу, чтобы отфильтровать результаты, где a.Id равняется собственности одного из объекты в общем списке «listOfObjects». Я получаю сообщение об ошибке «Локальная последовательность не может использоваться в LINQ to SQL реализации операторов запроса, кроме оператора Contains()».

Любые идеи относительно того, как фильтровать это легко читаемым способом с помощью «содержит» или другого метода?

Заранее спасибо.

ответ

3

Просто проецировать свой локальный список в список конкретных элементов, которые необходимо фильтровать:

var listOfIds = listOfObjects.Select(o => o.Id); 
var query = 
    from a in DatabaseTable 
    where listOfIds.Contains(a.Id) 
    select a; 
+0

Оо ... Я был слишком поздно. :) –

+0

Gah ... так очевидно. Спасибо, что я новичок в LINQ. – Ocelot20

2
var listOfIds = listOfObjects.Select(x => x.Id).ToList(); 

var query = from a in DatabaseTable 
      where listOfIds.Contains(a.Id) 
      select a; 
Смежные вопросы