2014-01-13 5 views
0

У меня есть следующий запросКак реализовать предложение 'in' в Entity Framework?

select distinct X.* from X 
inner join Y on X.ID = Y.ID1 
inner join Z on Y.ID= Z.ID2 
where X.param = 1 and Z.param in (1,2) 

До сих пор я стыки и где положение на X.param реализован, но я изо всех сил на в разделе о Z.param. Список идентификаторов подается от listofids типа List

entities.X 
.Join(entities.Y, t1 => t1.ID, t2 => t2.ID1, (t1, t2) => new { X= t1, Y= t2 }) 
.Join(entities.Z, t => t.Y.ID, t3 => t3.ID2, (t, t3) => new { X= t.X, Y= t.Y, Z= t3 }) 
.Select(d => d.X).Distinct().Where(x1 => x1.param == 1) 

Добавление следующее не работает

Any(d1 => d1.Z.param.Contains(listofids)) 

Любые идеи?

+0

Удалены Любые добавил 'в' пункта к 'где' п entities.X .join (entities.Y, t1 => t1.ID , t2 => t2.ID1, (t1, t2) => new {X = t1, Y = t2}) .Join (entities.Z, t => tYID, t3 => t3.ID2, (t, t3) => new {X = tX, Y = tY, Z = t3}) . Где (x1 => x1.X.param == 1 && listofids.Contains (x1.Z.param)). Выберите (d => dX) .Distinct() – Geoffrey

ответ

2

Вы должны полностью изменить Contains:

Any(d1 => listofids.Contains(d1.Z.param)) 
+0

Спасибо за правильное использование. Но при этом знать результаты в ошибке компиляции Невозможно неявно преобразовать тип 'bool' в 'System.Collections.Generic.IEnumerable <>' – Geoffrey

+0

Я предполагаю, что 'listofids' является' List '? Является ли 'd1.Z.param'' 'int'? –

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