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子句开头,并且必须以select或group子句结尾。在第一个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子句开头,并且必须以select或group子句结尾。在第一个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"));