在表中创建具有many2many关系的LINQ

时间:2015-10-20 12:47:58

标签: c# entity-framework linq

我有很多由实体框架创建的关系。

我尝试从具有许多关系的表中检索数据。

这个计划:

enter image description here

这是我创建的Linq:

var inspArchive = context
    .Set<InspectionArchive>()
    .Where(x => x.CustomerId == clientId && x.InspectionDomainId == domainId)
    .Select(x=>x);

LINQ从inspectionArchives表获取记录满足条件的地方。

在上面的LINQ中,我需要再包含一个条件,考虑到InspectionAuthoreties表的ID。

如何更改上面的LINQ以考虑InspectionAuthoreties表的ID。

2 个答案:

答案 0 :(得分:1)

使用package main import "fmt" import "github.com/howeyc/gopass" func main() { fmt.Printf("Password: ") pass := gopass.GetPasswd() // Do something with pass } from建立您的查询。

您的位置将基于

InspectionAuthoreties inspectionArchives

双方加入并返回结果的InspectionArchive部分

答案 1 :(得分:1)

假设InspectionArchive实体具有类型InspectionAuthority的集合导航属性,那么您可以这样做:

int inspectionAuthId=3;
var inspArchive = context.Set<InspectionArchive>()
                         .Where(x => x.CustomerId == clientId 
                                    && x.InspectionDomainId == domainId
                                    && x.InspectionAuthorities.Any(ia=>ia.Id==inspectionAuthId));
                       //.Select(x=>x); you don't need this select

另一种解决方案可能是使用查询表示法:

int inspectionAuthId=3;
var inspArchive = from ia in context.Set<InspectionArchive>()
                  from i in ia.InspectionAuthorities
                  where  ai.CustomerId == clientId 
                         && ai.InspectionDomainId == domainId
                         && i.Id==inspectionAuthId
                  select ia;