2013-11-21 77 views
1

我正在开发一个项目。我有以下型号不支持的表达式类型:System.Linq.Expressions.TypedParameterExpression

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; } 
} 

和我有以下指标定义

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

我尝试查询上述指标像这样

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; 
} 

但后来我得到的错误信息

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

我试着用下面的代码

.FirstOrDefault(m => registrantId.In<string>(m.RegistrantId)); 

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

Expression type not supported: System.Linq.Expressions.TypedParameterExpression 

还有什么我做错了。亲切的问候

回答

6

你需要做的是周围的其他方法:

不:

.FirstOrDefault(m => registrantId.Contains(m.RegistrantId)); 

但是:

.FirstOrDefault(m => m.RegistrantId.In(registrantId)); 
相关问题