gpt4 book ai didi

c# - IEnumerable.Except 不起作用,那我该怎么办?

转载 作者:太空狗 更新时间:2023-10-30 00:29:25 24 4
gpt4 key购买 nike

我有一个 linq to sql 数据库。非常简单,我们有 3 个表,项目和用户。有一个名为 User_Projects 的连接表将它们连接在一起。

我已经有了一个获取 IEnumberable<Project> 的工作方法对于给定的用户。

from up in User_Projects
select up.Project;

现在我想获取用户参与的项目。我认为 IEnumerable 的 except 方法在这里非常好:

return db.Projects.Except(GetProjects());

虽然可以编译,但是我收到运行时错误:“除了 Contains() 运算符外,本地序列不能用于查询运算符的 LINQ to SQL 实现。”

有什么办法可以解决这个问题吗?


更新:

一些观点但没有答案:p

我试过这个:

        IEnumerable<Project> allProjects = db.Projects;
IEnumerable<Project> userProjects = GetProjects();
return allProjects.Except(GetProjects());

我知道它与原始语句基本相同 - 但现在我没有收到运行时错误。不幸的是,出于某种原因,它并没有真正执行除外部分,只是返回所有项目

最佳答案

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;

关于c# - IEnumerable.Except 不起作用,那我该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/331345/

24 4 0