Linq 无法理解表达式-RavenDB

Linq 无法理解表达式-RavenDB,linq,ravendb,Linq,Ravendb,我有一组交易,每个交易都有一个允许访问交易的用户ID列表 对Raven的简单质疑 var theId = 6; var deals = session.Query<Deal>().Where(x => x.UserIds.Contains(theId)).ToList(); var theId=6; var deals=session.Query().Where(x=>x.UserIds.Contains(theId)).ToList(); Deal类看起来像什么 publ

我有一组交易,每个交易都有一个允许访问交易的用户ID列表

对Raven的简单质疑

var theId = 6;
var deals = session.Query<Deal>().Where(x => x.UserIds.Contains(theId)).ToList();
var theId=6;
var deals=session.Query().Where(x=>x.UserIds.Contains(theId)).ToList();
Deal类看起来像什么

public class Deal {
    public Int32 Id { get; set; }
    public List<Int32> UserIds = new List<Int32>();
}
公共类交易{
公共Int32 Id{get;set;}
public List userid=new List();
}
导致异常

Could not understand expression: .Where(x => x.UserIds.Contains(value(Deals_Manager.Controllers.DealsController+<>c__DisplayClass4).theId))
{"Expression type not supported: value(Deals_Manager.Controllers.DealsController+<>c__DisplayClass4).theId"}
无法理解表达式:。其中(x=>x.UserIds.Contains(值(Deals\u Manager.Controllers.DealsController+c\u DisplayClass4.theId))
内部异常

Could not understand expression: .Where(x => x.UserIds.Contains(value(Deals_Manager.Controllers.DealsController+<>c__DisplayClass4).theId))
{"Expression type not supported: value(Deals_Manager.Controllers.DealsController+<>c__DisplayClass4).theId"}
{“不支持的表达式类型:值(Deals\u Manager.Controllers.DealsController+c\u DisplayClass4).theId”}

问题是什么?

A
包含
内部
,其中
是一个极难转换为
UserIds:6的正确Lucene表达式的表达式树,更不用说引入闭包将外部变量引入lambda表达式了。(顺便说一句,正是这个结尾让你的例外看起来如此愚蠢。)

更复杂的是,您的模型是一个列表,它有自己的特殊版本
Contains
,与
IEnumerable
版本不同

请改为试穿以下尺码:

var theId = 6;
var deals = session.Query<Deal>()
    .Where(x => x.UserIds.Any(id => id == theId))
    .ToList();
var theId=6;
var deals=session.Query()
.Where(x=>x.UserIds.Any(id=>id==theId))
.ToList();

对于Raven无法理解的任何表达式树,只要试着用更原始的术语来考虑它。

A
包含
内部的
,其中
是一个极难转换为
用户ID:6的正确Lucene表达式的表达式树,更不用说引入闭包将外部变量引入lambda表达式。(顺便说一句,正是这个结尾让你的例外看起来如此愚蠢。)

更复杂的是,您的模型是一个列表,它有自己的特殊版本
Contains
,与
IEnumerable
版本不同

请改为试穿以下尺码:

var theId = 6;
var deals = session.Query<Deal>()
    .Where(x => x.UserIds.Any(id => id == theId))
    .ToList();
var theId=6;
var deals=session.Query()
.Where(x=>x.UserIds.Any(id=>id==theId))
.ToList();

对于Raven无法理解的任何表达式树,只要试着用更原始的术语来思考即可。

谢谢,忘记了这一点,但几周前就用这个解决了问题。谢谢,汉克斯,忘了这个,但几周前就用这个解决了这个问题。谢谢