Выражение, оцененное с помощью Where
, должно быть оценено как логическое значение.
where ( nv.StudentId = q.Where( p => p.Section.StudentId))
В этом случае вы дали ему Guid
.Вот откуда исходит ошибка.Я думаю, что у вас будут проблемы с этой строкой, даже если предикат Where
действителен.Судя по всему, вы хотите, чтобы все StudentId
в context.vw_Year_Plans
были также в q
.
Простой способ сделать это - создать промежуточную коллекцию идентификаторов.в q
для целей сравнения.
var temp = q.Select(a => a.Section.StudentId);
Затем посмотрите, есть ли каждый StudentId
в context.vw_Year_Plans
var k = from nv in context.vw_Year_Plans
where (temp.Contains(nv.StudentId))
select nv;
Существуют лучшие способы решения этой проблемы, но этодолжен помочь вам.
РЕДАКТИРОВАТЬ
Вы упомянули использование join
в своем комментарии.Я не тестировал ни одно из этих решений, но это должно быть то, что вам нужно.Если у вас все еще есть проблемы, обновите свой вопрос, указав более подробную информацию о проблемах, с которыми вы столкнулись.
var k = from nv in context.vw_Year_Plans
join p in q on nv.StudentId equals p.Section.StudentId
select nv;