linq to实体中的动态linq查询

linq to实体中的动态linq查询,linq,entity-framework-4,Linq,Entity Framework 4,我希望在查询中包括3个表,并仅选择最后一个表字段 [WebMethod] public Project[] GetAlll(int passeid)//passed id is the id of fieldteammeber table I am passing { var arr = db.Project.Include("FieldTeamMember") .Include("FieldTeam")

我希望在查询中包括3个表,并仅选择最后一个表字段

[WebMethod]
public Project[] GetAlll(int passeid)//passed id is the id of fieldteammeber table I am passing
{
    var arr = db.Project.Include("FieldTeamMember")
                        .Include("FieldTeam")
                        .Where(ft_id=ftm_id and ft_mid=prj_ftm_id and FTM_ID=passeid)
                        .ToArray();
    return arr;
}

要选择项目表字段。模型中的表之间有F个键。

我认为这是根据您的描述查找的查询:

int memberId = 1;
var projects = db.Projects
                 .Where(p => p.FieldTeam
                              .FieldTeamMembers.Any(ftm => ftm.Id == memberId));
或者,如果您更易于阅读:

int fieldTeamMemberId = 1;
var projects = db.FieldTeamMembers.Where(ftm => ftm.Id == memberId)
                                  .Select(ftm => ftm.FieldTeam.Project)
                                  .Distinct();

你的问题是什么?你有错误吗?不是预期的结果?这只是一个模型我只是写的,我不知道它是否是正确的语法,它没有运行。它有点不清楚你想做什么。你能写一个psuedo查询吗?这是我想要的。我的数据库中有三个表:FieldTeamMember、FieldTeam和Projects。它们与外键连接,项目ID为fieldteam,fieldteam成员ID为fieldteam。我想传递FildTeamMember的ID,并获取该ID的项目列表。类似于SQL中的select*从FIELD_TEAM f、FIELD_TEAM_MEMBER fm、PROJECT p中选择,其中f.FT_ID=fm.FTM_FT_ID和p.PRJ_FT_ID=f.FT_ID和FTM_ID='24352345'现在我这样做看起来不错,但我得到了一个错误[WebMethod]公共项目[]GetAlll(字符串devid){var pro=db.FieldTeamMembers.Where(ft=>ft.FtmDeviceId==devid).选择(ftm=>ftm.FieldTeam.Project).Distinct().ToArray();return pro;}[]为了现在看起来不错,我将select改为SelectMany,效果很好。看起来有点慢,但我会到处找。谢谢巴迪。我很感激。@Jaan:FieldTeam->Project关系是一对多吗?如果是这样,使用
SelectMany
很可能会导致它对表中的每个
FieldTeamMember
运行查询,这可能会导致他表现很差。耶哈,我现在注意到了。是1比多。