【发布时间】:2008-12-01 16:29:38
【问题描述】:
我有一个 linq to sql 数据库。非常简化,我们有 3 个表,项目和用户。有一个名为 User_Projects 的连接表将它们连接在一起。
我已经有了为给定用户获取IEnumberable<Project> 的工作方法。
from up in User_Projects
select up.Project;
现在我想获取用户不参与的项目。我认为 IEnumerable 的 except 方法在这里会很好:
return db.Projects.Except(GetProjects());
编译成功,但是我得到一个运行时错误:“本地序列不能在查询运算符的 LINQ to SQL 实现中使用,但 Contains() 运算符除外。”
有没有办法解决这个问题?
更新:
一些观点但没有答案:p
我试过这个:
IEnumerable<Project> allProjects = db.Projects;
IEnumerable<Project> userProjects = GetProjects();
return allProjects.Except(GetProjects());
我知道它与原始语句基本相同 - 但现在我没有收到运行时错误。不幸的是,由于某种原因,它并没有真正做除了部分,只是返回所有项目
【问题讨论】:
-
我编辑了我的答案,包括快速解释为什么你必须这样做。