我有一个视图和实体
var q = from stud in context.CollegePlans
where stud .Meta.Active == true &&
stud .CreatedBy_Id == user.Id
select stud ;
var k = from nv in context.vw_Year_Plans
where ( nv.StudentId == q.Where( p => p.Section.StudentId))
select nv;
studenId在视图和实体中都是Guid ..当我做上述事情时,它说不能隐含地转换system.Guid? bool ..怎么克服这个?
答案 0 :(得分:1)
由Where
评估的表达式需要计算为布尔值。
where ( nv.StudentId = q.Where( p => p.Section.StudentId))
在这种情况下,您已经给它Guid
。这就是错误的来源。我认为即使Where
谓词有效,你也会遇到问题。从它的外观来看,您希望StudentId
中的所有context.vw_Year_Plans
都在q
中。
一种简单的方法是在q
中创建一个id的中间集合,以便进行比较。
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;