asp.net-mvc - 如何在 LINQ 中查询列表

标签 asp.net-mvc asp.net-mvc-3 linq entity-framework

我的数据库中有 2 个表,其中一个用于 项目成员和项目成员之一
对用户进行身份验证后,我就有了他的 ID。在我的项目成员表中,我有项目 ID 和用户 ID。
我可以使用此用户获取项目成员列表

 var pm = db.ProjectMembers.Where(c=> c.UserID=u.UserID) ;

现在我的问题是如何从上述列表中获取 ProjectID 列表。然后如何使用 ProjectID 列表从 Project 表中获取项目列表。

最佳答案

您问题的第一部分:

var projectIDs = db.ProjectMembers.Where(c=> c.UserID=u.UserID).select(pm=>pm.ProjectID) ;

第二部分:

如果您使用的是 Entity Framework ,您应该看到 ProjectMembers 列表中的每个实体都有一个名为 (project) 的属性,您可以简单地忽略我这个答案的第一部分并直接使用这个
var projectsList = db.ProjectMembers.Where(c=> c.UserID=u.UserID).select(pm=>pm.Project) ;

该属性可能有不同的名称,试一试并告诉我发生了什么。

注:如果检索到的项目为空,那么您的 Entity Framework 正在使用 Eager 加载(谷歌它)。
因此,为了让 Entity Framework 生成正确的 SQL 语法来检索项目数据,请将 Include() 添加到您的查询中,如下所示:
var projectsList = db.ProjectMembers.Where(c=> c.UserID=u.UserID).Include("Projects").select(pm=>pm.Project) ;

关于asp.net-mvc - 如何在 LINQ 中查询列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10028466/

相关文章:

asp.net mvc [handleerror] [authorize] 与 JsonResult?

c# - 在 MVC3 应用程序中解耦 Entity Framework

c# - Linq 查询仅在以点表示法编写时才有效

c# - 使用 C# Linq 将对象插入到列表中

c# - 如何制作具有多个参数的linq表达式

asp.net-mvc - 使用 MVC 5 注册 UnityPerRequestHttpModule 时出现异常

c# - 跳过基于模型属性之一的模型的所有验证 (ASP.Net Core 2.0)

c# - 是否还记得之前 MVC 5 中的重定向操作?

database - 用于 ASP.NET MVC 3 用户管理/成员资格的最小数据库

c# - 如何在 MVC3 中使用 RequireHttps 属性指定不同的端口