Asp.net LINQ-EF连接困难

Asp.net LINQ-EF连接困难,asp.net,linq,entity-framework,Asp.net,Linq,Entity Framework,我有两张桌子: 阶段: long ID string Name long ID string Name long PhaseID 还有另一个活动: long ID string Name long ID string Name long PhaseID 我已经知道这些阶段的名称,我想获得这些特定阶段的活动。我是将PhaseName添加到活动表中,还是通过LINQ中的join进行添加 也许是这样的 var query = from a in entities.Activities

我有两张桌子:

阶段:

long ID
string Name
long ID
string Name
long PhaseID
还有另一个活动:

long ID
string Name
long ID
string Name
long PhaseID
我已经知道这些阶段的名称,我想获得这些特定阶段的活动。我是将PhaseName添加到活动表中,还是通过LINQ中的join进行添加

也许是这样的

var query = from a in entities.Activities
                        join p in entities.Phases on a.PhaseId equals p.Id
                        where p.Name == "Preplanning"
。。。在这里我不知道如何完成这个查询


谢谢你的帮助

您提供的代码将使用
内部联接
查找存在名为“预先计划”的阶段的所有活动。
要完成查询,需要添加select子句

var query = from a in entities.Activities
                 join p in entities.Phases on a.PhaseId equals p.Id
                 where p.Name == "Preplanning"
                 select a.Name   

将返回所有活动名称的
IEnumerable

您提供的代码将使用
内部联接
查找存在名为“预先计划”的阶段的所有活动。
要完成查询,需要添加select子句

var query = from a in entities.Activities
                 join p in entities.Phases on a.PhaseId equals p.Id
                 where p.Name == "Preplanning"
                 select a.Name   

将返回所有活动名称的
IEnumerable

只需根据需要选择“活动”:

var query = from a in entities.Activities
            join p in entities.Phases on a.PhaseId equals p.Id
            where p.Name == "Preplanning"
            select a;
下面是您应该看到的样子:

查询表达式必须以from子句开头,并且必须以selectgroup子句结尾。在第一个from子句和最后一个select或group子句之间,它可以包含一个或多个可选子句:where、orderby、join、let,甚至还有附加from子句。还可以使用into关键字启用join或group子句的结果作为同一查询表达式中其他查询子句的源

与迷惑不解的图像相同:

使用方法语法,您不需要以特殊的内容结束查询:

var query = entities.Phases
               .Where(p => p.Name == "Preplanning")
               .Join(entities.Activities, p => p.Id, a => a.PhaseId, (p,a) => a);

只需根据需要选择“活动”:

var query = from a in entities.Activities
            join p in entities.Phases on a.PhaseId equals p.Id
            where p.Name == "Preplanning"
            select a;
下面是您应该看到的样子:

查询表达式必须以from子句开头,并且必须以selectgroup子句结尾。在第一个from子句和最后一个select或group子句之间,它可以包含一个或多个可选子句:where、orderby、join、let,甚至还有附加from子句。还可以使用into关键字启用join或group子句的结果作为同一查询表达式中其他查询子句的源

与迷惑不解的图像相同:

使用方法语法,您不需要以特殊的内容结束查询:

var query = entities.Phases
               .Where(p => p.Name == "Preplanning")
               .Join(entities.Activities, p => p.Id, a => a.PhaseId, (p,a) => a);

如果只需要其中一个表中的数据,则无需执行联接。您可以改为应用过滤器:

var q = entities.Activities.Where(a => 
        entities.Phases.Any(p => a.PhaseId == p.Id && p.Name == "Preplanning"));

如果只需要其中一个表中的数据,则无需执行联接。您可以改为应用过滤器:

var q = entities.Activities.Where(a => 
        entities.Phases.Any(p => a.PhaseId == p.Id && p.Name == "Preplanning"));