C# 如果表之间存在多对多关系,如何在实体框架中求交?

C# 如果表之间存在多对多关系,如何在实体框架中求交?,c#,entity-framework,linq,entity-framework-6,many-to-many,C#,Entity Framework,Linq,Entity Framework 6,Many To Many,我有这个模型(模型更多,但现在不重要) 我有一些注释,我想了解所有用户如何使用这些注释,但我得到了一个例外(“无法创建'DataBase.Annotation'类型的常量值”)。 此上下文中仅支持基元类型或枚举类型。“),当使用下一个代码时 TextCorporaEntities TextCorporaContext = new TextCorporaEntities(); List<DataBase.Annotation> annotations = //annotations

我有这个模型(模型更多,但现在不重要)

我有一些注释,我想了解所有用户如何使用这些注释,但我得到了一个例外(“无法创建'DataBase.Annotation'类型的常量值”)。 此上下文中仅支持基元类型或枚举类型。“),当使用下一个代码时

TextCorporaEntities TextCorporaContext = new TextCorporaEntities();
List<DataBase.Annotation> annotations = //annotations which I used  
//I get the exception here
var UserAnnotationsResult = TextCorporaContext.Annotation_User.
        Where(x => annotations.
            Contains(x.Annotation));
TextCorporateEntities textCorporateContext=new textCorporateEntities();
列表注释=//我使用的注释
//我这里有个例外
var UserAnnotationsResult=textcorporationcontext.Annotation\u用户。
其中(x=>注释。
包含(x.Annotation));
我可以使用这段代码,但它没有效率

List<Annotation_User> listResult = new List<Annotation_User>(); 
foreach (var x in annotations)
{
    listResult.Concat(TextCorporaContext.Annotation_User.Where(y=>y.AnnotationId == x.Id));
}
List listResult=new List();
foreach(注释中的var x)
{
Concat(textcorporationcontext.Annotation_User.Where(y=>y.AnnotationId==x.Id));
}
如何获取使用了某些注释的所有用户?
如何获取使用AccessType等于ReadOrWrite(在模型中它保存为字符串)的某些注释的所有用户?

您只能将Contains与原语一起使用

我认为这应该行得通

var annotationsIds = annotations.Select(a => a.AnnotationId)
var UserAnnotationsResult = TextCorporaContext.Annotation_User.
    Where(x => annotationsIds.
        Contains(x.Annotation.AnnotationId));

只能对基本体使用“包含”

我认为这应该行得通

var annotationsIds = annotations.Select(a => a.AnnotationId)
var UserAnnotationsResult = TextCorporaContext.Annotation_User.
    Where(x => annotationsIds.
        Contains(x.Annotation.AnnotationId));