我有一个 linq to sql 数据库。非常简单,我们有 3 个表:项目和用户。有一个名为 User_Projects 的连接表将它们连接在一起。
我已经有了一个获得的工作方法IEnumberable<Project>
对于给定用户。
from up in User_Projects
select up.Project;
现在我想获取用户的项目isn't涉及.我认为 IEnumerable 的 except 方法在这里会非常好:
return db.Projects.Except(GetProjects());
可以编译,但是我收到运行时错误:“本地序列不能在查询运算符的 LINQ to SQL 实现中使用,除了 Contains() 运算符之外。”
有什么办法可以解决这个问题吗?
Update:
有一些观点但没有答案:p
我已经尝试过这个:
IEnumerable<Project> allProjects = db.Projects;
IEnumerable<Project> userProjects = GetProjects();
return allProjects.Except(GetProjects());
我知道它本质上与原始语句相同 - 但现在我没有收到运行时错误。不幸的是,由于某种原因,它并没有真正执行 except 部分,而只是返回所有项目
Linq to Sql 不理解如何处理任意内存中的对象序列。您需要用关系术语来表达这一点,这适用于 ID:
var userProjectIds =
from project in GetProjects()
select project.ProjectId;
var nonUserProjects =
from project in db.Projects
where !userProjectIds.Contains(project.ProjectId)
select project;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)