不支持表达式类型:System.Linq.Expressions.TypedParameterExpression

Set*_* IK 1 c# asp.net asp.net-mvc ravendb

我正在做一个项目.我有以下模型

public class RegistrantClass : IRavenEntity
{
   public RegistrantClass()
   {
       RegistrantId = new List<string>();
   }
   public int Id { get; set; }

   public IList<String> RegistrantId { get; set; }

   public String ClassId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我定义了以下索引

        store.DatabaseCommands.PutIndex("RegistrantClass/ClassByStudents",
                            new IndexDefinitionBuilder<RegistrantClass>
                            {
                                Map = students => from i in students
                                                  from j in i.RegistrantId
                                                  select new { j }
                            });
Run Code Online (Sandbox Code Playgroud)

我试着像这样查询上面的索引

public object GetMapping(string registrantId)
{
 var mapping = _session.Query<RegistrantClass>("RegistrantClass/ClassByStudents")
                             .Customize(i => i.Include<RegistrantClass>(k => k.RegistrantId))
                             .Customize(i => i.Include<RegistrantClass>(k => k.ClassId))
                             .FirstOrDefault(m => m.registrantId.Contains(registrantId));
return mapping;
}
Run Code Online (Sandbox Code Playgroud)

但后来我得到错误信息

但是,这给了我NotSupportedException:不支持的方法:包含.

我尝试使用以下代码

 .FirstOrDefault(m => registrantId.In<string>(m.RegistrantId));
Run Code Online (Sandbox Code Playgroud)

但后来我得到以下错误消息

Expression type not supported: System.Linq.Expressions.TypedParameterExpression
Run Code Online (Sandbox Code Playgroud)

我做错了什么?亲切的问候

Aye*_*ien 6

你需要反过来做:

不:

.FirstOrDefault(m => registrantId.Contains(m.RegistrantId));
Run Code Online (Sandbox Code Playgroud)

但:

.FirstOrDefault(m => m.RegistrantId.In(registrantId));
Run Code Online (Sandbox Code Playgroud)