C# 4.0 RIA服务和lambda连接出现问题
注:在下面的评论中,这已被回答为重复 我很难让RIA服务返回我需要的数据,而不是超过我需要的数据。我有一个包含许多子对象的父对象(项目)。一个是组件(每个项目一个组件)。另一个是ProjectParticipant,它需要根据ParticipantControl进行限制,我还需要获取人员信息(与ProjectParticipant相关) 以下是我之前尝试过的一些代码:C# 4.0 RIA服务和lambda连接出现问题,c#-4.0,silverlight-4.0,entity-framework-4,wcf-ria-services,C# 4.0,Silverlight 4.0,Entity Framework 4,Wcf Ria Services,注:在下面的评论中,这已被回答为重复 我很难让RIA服务返回我需要的数据,而不是超过我需要的数据。我有一个包含许多子对象的父对象(项目)。一个是组件(每个项目一个组件)。另一个是ProjectParticipant,它需要根据ParticipantControl进行限制,我还需要获取人员信息(与ProjectParticipant相关) 以下是我之前尝试过的一些代码: public IQueryable<IMSModel.Project> GetProjectHierarchy(St
public IQueryable<IMSModel.Project> GetProjectHierarchy(String id)
{
return this.ObjectContext.Projects
.Include("Component")
.Include("ProjectParticipants")
.Include("ProjectParticipants.Person")
.Where(p => p.Program.ProgramType.lookupName == "EVDBE" &&
p.ProjectOrgs.Any(po => po.orgId == id) &&
p.ProjectParticipants.Any(pp => (pp.postId == id)) &&
p.ProjectParticipants.Any(pp => pp.PersonStatus.lookupName == "A") &&
p.ProjectParticipants.Any(pp => pp.ParticipantRole.participantInd == "Y"))
.OrderBy(p => new { p.fiscalYear, p.title })
.OrderByDescending(p => p.fiscalYear);
}
公共IQueryable GetProjectHierarchy(字符串id)
{
返回this.ObjectContext.Projects
.包括(“组成部分”)
.包括(“项目参与者”)
.包括(“项目参与者.个人”)
.Where(p=>p.Program.ProgramType.lookupName==“EVDBE”&&
p、 ProjectOrgs.Any(po=>po.orgId==id)&&
p、 ProjectParticipants.Any(pp=>(pp.postId==id))&&
p、 ProjectParticipants.Any(pp=>pp.PersonStatus.lookupName==“A”)&&
p、 ProjectParticipants.Any(pp=>pp.participantControl.participantId==“Y”))
.OrderBy(p=>new{p.fiscalYear,p.title})
.OrderByDescending(p=>p.fiscalYear);
}
这并不太糟糕,但我最终得到了我不想要的ProjectParticipant对象。我真正想做的是将ProjectParticipant对象限制为那些具有participantControl.participantId==“Y”的对象
我尝试了另一种可能的语法,如下所示:
public IQueryable<IMSModel.Project> GetProjectHierarchy(String id)
{
return this.ObjectContext.Projects
.Include("Component")
.Join(this.ObjectContext.ProjectParticipants
.Include("ProjectParticipants.Person")
.Where(
pp => pp.ParticipantRole.participantInd == "Y" &&
pp.postId == id &&
pp.PersonStatus.lookupName == "A"
)
, p => p.id
, pp => pp.projectId
, (p, pp) => p )
.Where(p => p.Program.ProgramType.lookupName == "EVDBE"
&& p.ProjectOrgs.Any(po => po.orgId == id));
}
公共IQueryable GetProjectHierarchy(字符串id)
{
返回this.ObjectContext.Projects
.包括(“组成部分”)
.Join(this.ObjectContext.ProjectParticipants
.包括(“项目参与者.个人”)
.在哪里(
pp=>pp.ParticipantControl.ParticipantId==“Y”&&
pp.postId==id&&
pp.PersonStatus.lookupName==“A”
)
,p=>p.id
,pp=>pp.projectd
,(p,pp)=>p)
.Where(p=>p.Program.ProgramType.lookupName==“EVDBE”
&&p.ProjectOrgs.Any(po=>po.orgId==id));
}
我想这会让我得到更接近我想要的东西。唯一的问题是,我没有在我的分层树视图中得到任何东西。返回了一些内容,因为为每条记录创建了空白位置,但我的绑定没有显示任何信息。第一个示例的绑定确实显示数据,而第二个示例的绑定(更有限的结果集,因为我没有使用Any())不显示数据
我已经用我的头撞击这个有一段时间了,无法解决。任何帮助都会很好。这是一个重复的问题(至少根本原因是,您可以在链接中找到答案):